code coverage - reporter - ¿Hay una manera de enfocar los informes de cobertura de código lcov a solo uno o dos directorios?
test coverage istanbul (3)
Recientemente comencé a usar lcov para visualizar la cobertura de mi código. Es una gran herramienta.
Una cosa que estoy notando es que genera informes de cobertura de código para todos los archivos que estoy usando, incluidos aquellos que no me interesan. Por ejemplo, me dará informes de cobertura de código para los archivos boost y mysql ++.
¿Existe una manera fácil de forzar a lcov a generar solo informes de cobertura para archivos específicos?
He intentado usar el parámetro -k así:
/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
(Lo que significa que solo quiero archivos de cobertura para los directorios "include" y "src").
Sin embargo, esto no parece funcionar. El informe todavía me muestra todos los archivos extraños. Cualquier sugerencia es muy apreciada. ¡Gracias!
Un posible enfoque es restringir qué archivos se compilan con los indicadores de cobertura (-fprofile-arcs -ftest-cover). Si no desea diseñar su sistema de archivos make para que sea selectivo sobre qué archivos se construyen con la instrumentación de prueba, el siguiente truco podría funcionar para usted:
- Construye tu aplicación sin instrumentación.
- Elimine los archivos .o para la fuente que desee instrumentar
- Enciende la instrumentación y reconstruye. Solo los archivos de objetos eliminados serán reconstruidos con la instrumentación.
- Corre lcov
Esto debería dar como resultado que solo las áreas objetivo emitan artefactos gcov, que son consumidos ciegamente por los scripts lcov.
Utilicé el indicador --no-external junto con --directory para excluir archivos no deseados.
La definición de externo del hombre:
Los archivos de origen externos son archivos que no se encuentran en uno de los directorios especificados por --directory o --base-directory.
Así que mi orden se veía así:
$ 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
lcov admite un argumento de línea de comando: elimine para hacer exactamente lo que está pidiendo.