Gibt es eine Möglichkeit lcov Code-Coverage-Berichte nur ein oder zwei Verzeichnisse zu konzentrieren?

StackOverflow https://stackoverflow.com/questions/837639

  •  10-07-2019
  •  | 
  •  

Frage

ich mit lcov vor kurzem damit begonnen meine Code-Coverage zu visualisieren. Es ist ein großes Werkzeug.

Eine Sache, ich bin zu bemerken ist, dass es Code-Coverage-Berichte für alle Dateien erzeugt, die ich verwende -. Einschließlich denen, die ich nicht interessiert bin Zum Beispiel wird es mir Code-Coverage-Berichte für Auftrieb und mysql geben ++ Dateien.

Gibt es eine einfache Möglichkeit, lcov zu zwingen, nur Berichterstattung Berichte für bestimmte Dateien erzeugen?

Ich habe versucht, den Parameter -k mit etwa so:

/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info

{run unit tests now}

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info
/usr/bin/genhtml -q -o lcov_output_directory app_total.info

(Was bedeutet, dass ich will nur Abdeckung Dateien für die "include" und "src" Verzeichnisse.)

Doch das scheint nicht zu funktionieren. Der Bericht zeigt immer noch mir alle irrelevanten Dateien. Alle Vorschläge sind sehr geschätzt. Dank!

War es hilfreich?

Lösung

lcov unterstützt ein Befehlszeilenargument - entfernen tun genau das, was Sie fordern.

Andere Tipps

Ich benutzen die --no-external Flagge zusammen mit der --directory Flagge unerwünschte Dateien auszuschließen.

Die Definition von externen von dem Mann:

  

Externe Quelldateien sind Dateien, die in einem der Verzeichnisse befinden sich nicht durch --directory oder --base-Verzeichnis angegeben.

Also mein Befehl sah wie folgt aus:

$ lcov  --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
  ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h

Ein möglicher Ansatz ist zu beschränken, welche Dateien mit dem Erfassungsgrad Flags kompiliert werden (-fprofile-Bögen -ftest-Abdeckung). Wenn Sie selektiv nicht Ihr Make-Dateisystem konstruieren wollen sein, um die Dateien mit Prüfgeräten gebaut werden, der folgende Trick könnte für Sie arbeitet:

  • Erstellen Sie Ihre Anwendung ohne Instrumentierung.
  • Entfernen Sie die .o-Dateien für Quelle, die Sie Instrument wollen
  • Einschalten Instrumentierung und wieder aufzubauen. Es werden nur die gelöschten Objektdateien mit Instrumentierung neu erstellt werden.
  • Ausführen lcov

Diese nur in den Zielgebieten zur Folge haben sollten gcov Artefakte zu emittieren, die von dem lcov Skripte blind verbraucht werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top