Existe-t-il un moyen de concentrer les rapports de couverture de code de lcov sur un ou deux répertoires?

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

  •  10-07-2019
  •  | 
  •  

Question

J'ai récemment commencé à utiliser lcov pour visualiser la couverture de mon code. C'est un excellent outil.

Une chose que je remarque est qu'il génère des rapports de couverture de code pour tous les fichiers que j'utilise, y compris ceux qui ne m'intéressent pas. Par exemple, cela me fournira des rapports de couverture de code pour boost et mysql ++. fichiers.

Existe-t-il un moyen simple de forcer Icov à générer uniquement des rapports de couverture pour des fichiers spécifiques?

J'ai essayé d'utiliser le paramètre -k comme suit:

/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

(Cela signifie que je ne veux que des fichiers de couverture pour les répertoires "include" et "src".)

Cependant, cela ne semble pas fonctionner. Le rapport me montre toujours tous les fichiers superflus. Toutes les suggestions sont très appréciées. Merci!

Était-ce utile?

La solution

lcov prend en charge l'argument de ligne de commande - remove faire exactement ce que vous demandez.

Autres conseils

J'ai utilisé l'indicateur - no-external avec l'indicateur - directory pour exclure les fichiers indésirables.

La définition de l'externe de l'homme:

  

Les fichiers source externes sont des fichiers qui ne se trouvent pas dans l'un des répertoires spécifiés par --directory ou --base-directory.

Donc ma commande ressemblait à ceci:

$ 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

Une approche possible consiste à limiter les fichiers compilés avec les indicateurs de couverture (-fprofile-arcs -ftest-coverage). Si vous ne souhaitez pas que votre système de fichiers make soit sélectif quant aux fichiers construits avec l'instrumentation de test, l'astuce suivante peut vous convenir:

  • Construisez votre application sans instrumentation.
  • Supprimez les fichiers .o de la source que vous souhaitez instrumenter
  • Allumez l'instrumentation et reconstruisez. Seuls les fichiers d'objets supprimés seront reconstruits avec une instrumentation.
  • Exécuter lcov

Cela devrait avoir pour résultat que seules les zones ciblées émettent des artefacts gcov, qui sont aveuglément consommés par les scripts lcov.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top