¿Hay alguna manera de enfocar los informes de cobertura de código lcov en solo uno o dos directorios?

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

  •  10-07-2019
  •  | 
  •  

Pregunta

Recientemente comencé a usar lcov para visualizar la cobertura de mi código. Es una gran herramienta.

Una cosa que noto es que genera informes de cobertura de código para todos los archivos que estoy usando, incluidos los que no me interesan. Por ejemplo, me dará informes de cobertura de código para boost y mysql ++ archivos.

¿Existe una manera fácil de obligar 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!

¿Fue útil?

Solución

lcov admite un argumento de línea de comando --remove para hacer exactamente lo que está pidiendo.

Otros consejos

Utilicé el indicador --no-external junto con el indicador --directory para excluir archivos no deseados.

La definición de externo del hombre:

  

Los archivos fuente externos son archivos que no se encuentran en uno de los directorios especificados por --directory o --base-directory.

Entonces mi comando 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

Un posible enfoque es restringir qué archivos se compilan con los indicadores de cobertura (-fprofile-arcs -ftest-coverage). Si no desea diseñar su sistema de archivos make para que sea selectivo sobre qué archivos se crean con instrumentación de prueba, el siguiente truco podría funcionar para usted:

  • Cree su aplicación sin instrumentación.
  • Elimine los archivos .o de la fuente que desea instrumentar
  • Encienda la instrumentación y reconstruya. Solo los archivos de objetos eliminados se reconstruirán con instrumentación.
  • Ejecutar lcov

Esto debería dar como resultado que solo las áreas seleccionadas emitan artefactos gcov, que los scripts lcov consumen ciegamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top