Domanda

Al momento usiamo gcov con la nostra suite di test per applicazioni Linux C ++ e fa un buon lavoro a misurare la copertura di linea.

Può gcov funzione prodotti / rapporto di copertura metodo in aggiunta alla linea di copertura?

Guardando i parametri gcov accetta Non credo sia possibile, ma potrebbe mancare qualcosa. O, forse, c'è qualche altro strumento che può produrre una relazione di copertura funzione / metodo di statistiche generate da gcc?

Aggiornamento: Per la copertura funzione / metodo intendo percentuale di funzioni che vengono eseguite durante i test

.
È stato utile?

Soluzione

Credo che quello che vuoi dire è l'opzione -f, che vi darà la percentuale di linee coperte per funzione. C'è un interessante articolo su gcov a Dr. di Dobb che potrebbe essere utile. Se "l'uomo gcov" non mostra il flag -f, controllare se si dispone di una versione reasobably recente della suite gcc.

Modifica per ottenere la percentuale di funzioni non eseguita si può semplicemente analizzare attraverso l'uscita di copertura funzioni, come la copertura 0,00% dovrebbe essere più o meno equivale a non chiama. Questo piccolo script stampa la percentuale di funzioni non eseguita:

#!/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

Altri suggerimenti

Abbiamo iniziato ad utilizzare gcov e lcov insieme. I risultati di lcov comprendono la percentuale di funzioni che vengono eseguiti per il "modulo" si sta guardando.

Modifica modulo può andare da directory giù ai file.

Voglio anche aggiungere che se si sta già utilizzando gli strumenti compilatore GNU, quindi gcov / lcov non sarà troppo difficile per voi per ottenere l'esecuzione ed i risultati che produce sono molto impressionante.

L'utilità lcov è bello, e lo usiamo. Ma io non sono sicuro se ne avete bisogno per ciò che si vuole.

  1. Utilizzare ctags ( wikipedia ; sourceforge ) per trovare tutte le funzioni dichiarate nei file di intestazione in questione.

  2. Esegui GCOV per ottenere una copertura linea per ogni funzione nel binario.

  3. Confrontare l'elenco di funzioni dal 1 & 2 per la produzione di "funzioni chiamate" / "Funzioni disponibili".

Noi lo chiamiamo "la copertura API" dal momento che le operazioni al punto 1 solo alle intestazioni API pubbliche. Ma si può fare su tutte le intestazioni o solo un sottoinsieme come si sceglie. Credo che il rapporto che produciamo in questo modo è il rapporto che si sta cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top