Existe uma maneira de focar relatórios de cobertura de código LCOV em apenas um ou dois diretórios?
-
10-07-2019 - |
Pergunta
Recentemente, comecei a usar o LCOV para visualizar minha cobertura de código. É uma ótima ferramenta.
Uma coisa que estou percebendo é que ele gera relatórios de cobertura de código para todos os arquivos que estou usando - incluindo aqueles em que não estou interessado. Por exemplo, isso me dará relatórios de cobertura de código para arquivos Boost e MySQL ++.
Existe uma maneira fácil de forçar o LCOV a gerar apenas relatórios de cobertura para arquivos específicos?
Eu tentei usar o parâmetro -k como assim:
/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
(O que significa que eu quero apenas arquivos de cobertura para os diretórios "incluir" e "src".)
No entanto, isso não parece funcionar. O relatório ainda me mostra todos os arquivos estranhos. Quaisquer sugestões são muito apreciadas. Obrigado!
Solução
LCOV suporta um argumento da linha de comando --remover fazer exatamente o que você está pedindo.
Outras dicas
Eu usei o --no-external
bandeira junto com o --directory
sinalizador para excluir arquivos indesejados.
A definição de externo do homem:
Os arquivos de origem externa são arquivos que não estão localizados em um dos diretórios especificados por--Diretório ou--Base-Directory.
Então meu comando parecia assim:
$ 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
Uma abordagem possível é restringir quais arquivos são compilados com os sinalizadores de cobertura (-FProfile-Arcs -Test-Cobering). Se você não deseja projetar seu sistema de arquivos Make para ser seletivo sobre quais arquivos são construídos com a instrumentação de teste, o truque a seguir pode funcionar para você:
- Construa sua aplicação sem instrumentação.
- Remova os arquivos .O para a fonte que deseja instrumentar
- Ligue a instrumentação e a reconstrução. Somente os arquivos de objeto excluídos serão reconstruídos com instrumentação.
- Execute LCOV
Isso deve resultar apenas nas áreas direcionadas emitindo artefatos do GCOV, consumidos cegamente pelos scripts LCOV.