Existe uma maneira de focar relatórios de cobertura de código LCOV em apenas um ou dois diretórios?

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

  •  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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top