Pergunta

Atualmente nós usamos gcov com nossa suíte de testes para aplicação Linux C ++ e ele faz um trabalho bom para medir a cobertura de linha.

Can gcov produzir relatório de cobertura função / método, além de cobertura de linha?

Olhando para os parâmetros gcov aceita Eu não acho que é possível, mas eu pode estar faltando alguma coisa. Ou, provavelmente, há alguma outra ferramenta que pode produzir relatório de cobertura função / método de fora das estatísticas geradas pelo gcc?

Update:. por função / cobertura método I percentual médio de funções que são executadas durante os testes

Foi útil?

Solução

Eu acho que você quer dizer é a opção -f, o que lhe dará a porcentagem de linhas cobertas por função. Há um artigo interessante sobre gcov em Dr. de Dobb, que pode ser útil. Se "o homem gcov" não mostra o sinalizador -f, verifique se você tem uma versão reasobably recente da suíte gcc.

Editar: para obter a percentagem de funções não executados você pode simplesmente analisar através da saída de cobertura função, como a cobertura de 0,00% deve ser praticamente equivalente a não chamada. Este pequeno script imprime a porcentagem de funções não executado:

#!/bin/bash

if test -z "$1"
then
    echo "First argument must be function coverage file"
else
    notExecuted=`cat $1 | grep "^0.00%" | wc -l`
    executed=`cat $1 | grep -v "^0.00%" | wc -l`

    percentage=$(echo "scale=2; $notExecuted / ($notExecuted + $executed) * 100" |bc)

    echo $percentage
fi

Outras dicas

Nós começamos a usar gcov e lcov juntos. Os resultados de lcov fazer incluem a percentagem de funções que são executadas para o "módulo" você está olhando.

EDIT: O módulo pode ir de diretórios para baixo para arquivos.

Eu também quero acrescentar que, se você já estiver usando as ferramentas GNU Compiler, então gcov / lcov não vai ser muito difícil para você obter em execução e os resultados que ela produz são muito impressionante.

O utilitário lcov é bom, e nós usá-lo. Mas eu não tenho certeza se você precisar dele para o que você quiser.

  1. Use CTags ( wikipedia ; sourceforge ) para encontrar todas as funções declaradas nos arquivos de cabeçalho relevantes.

  2. Executar gcov para obter cobertura de linha para cada função no binário.

  3. Compare a lista de funções a partir de 1 & 2 para produzir "funções chamadas" / "Funções disponíveis".

Nós o chamamos de "cobertura de API", uma vez que se aplicam a etapa # 1 apenas para cabeçalhos de API pública. Mas você pode fazê-lo em todos os cabeçalhos ou apenas um subconjunto como você escolher. Eu acho que a razão nós produzimos desta maneira é a razão que você está procurando.

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