2016-03-20 23 views
3

Wir verwenden gcov und gcovr.py, um Berichte zu unseren Tests zu erhalten. Nicht alle Quelldateien werden überhaupt getestet und daher werden diese im gcovr-Bericht nicht erwähnt. Jetzt möchte ich die Gesamtabdeckung für die gesamte Codebasis trotzdem berechnen.Zeilen von C-Code in Dateien abrufen

Aus den Berichten kann ich Linien abdecken, aber ich müsste auch die Anzahl der C-Code-Zeilen in den Dateien erhalten, die nicht getestet werden. Was wären die Möglichkeiten, Zeilen von C-Code in Dateien innerhalb des Code-Verzeichnisses zu bekommen?

+1

Meinst du 'non-Kommentar (nicht-leere) Zeilen des Codes'? Wenn Sie nur 'Zeilen in der Datei' meinen, gibt 'wc -l' Ihnen die Antwort. –

Antwort

3

Werfen Sie einen Blick auf cloc, die Zeilen von Code in Dateien zählen oder ein Verzeichnis verarbeiten: https://github.com/AlDanial/cloc.

+0

Danke, ich denke, das wird zu diesem Zweck passen. Vielleicht wird es kleine Ungenauigkeiten geben, aber sollte nicht so schlecht sein. Ich habe versucht, etwas Ähnliches zu finden, aber in Python geschrieben, um es "nativ" in mein Skript aufzunehmen, konnte aber nichts finden. – burm

+0

@burm: Ja. Ich kenne das Gefühl in Bezug auf Dinge, die nicht in Python oder Haskell geschrieben sind. Aber es ist besser als nichts. :-) –

0

Nach dem, was ich weiß, wenn Sie Abdeckung Bericht mit gcovr generieren gibt es diese Art von Bericht in der Konsole aus

------------------------------------------------------------------------------ 
        GCC Code Coverage Report 
Directory: ...../src/ 
------------------------------------------------------------------------------ 
File          Lines Exec Cover Missing 
------------------------------------------------------------------------------ 
src/A/A1/xyz.cpp       1609  2  0% 97,99,101.... 
src/A/A2/abcg.cpp       271  4  1% ....... 
src/B/B1/mnop.cpp        74  2  2% 34,42,56-..... 
src/B/B2/wrds.cpp       1533  6  0% 76,83,85-..... 
src/C/C1/abcdefg.cpp      1079  8  0% 143,150,152..... 

Dies hat all liine Zahlen, die nicht zu jeder Quelldatei relevant ausgeführt wurden.
Hoffe, es hat geholfen :)