2012-11-14 10 views
20

Ho utilizzato lo lcov per creare informazioni sulla copertura nel mio progetto. Ma posso solo ottenere informazioni sulla copertura della linea e sulla copertura della funzione.Lcov: impossibile raccogliere le statistiche di copertura delle filiali

lcov version:1.10, gcov version:4.4.5 

I comandi che ho usato è:

lcov -d $OSPL_HOME/src -d $OSPL_OUTER_HOME/src -c -o /work/li/log/lcov-raw.info 

lcov -r /work/li/log/lcov-raw.info "*.ll" "*.yy" "*.yy.c" yaccpar "TAO161*" "/usr/include/*" "*/testsuite/*" -o /work/li/log/lcov.info 

Dopo questi due comandi, ho ottenuto i risultati è:

Deleted 23 files 

Writing data to /work/li/log/lcov.info 

Summary coverage rate: 

    lines......: 45.4% (65087 of 143496 lines) 

    functions..: 46.1% (5575 of 12102 functions) 

    **branches...: no data found** 

Quindi non ci sono risultati di copertura rami. Perché? Allora, cos'è successo? E come può accadere? Sono confuso qui.

Dopo il primo comando, ho avuto un sacco di avvertimenti come questi:

geninfo: WARNING: cannot find an entry for ..#..#code#accum.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#at.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#autodef.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#copyof.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#debug.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#define.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#dump.c.gcov in .gcno file,skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#error.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#expand.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#expr.c.gcov in .gcno file,skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#if.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#include.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#io.c.gcov in .gcno file, s kipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#is.c.gcov in .gcno file, s kipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#line.c.gcov in .gcno file,skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#pragma.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#preprocess.c.gcov in .gcnofile, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#set.c.gcov in .gcno file,skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#sharp.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#symtbl.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#undef.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: cannot find an entry for ..#..#code#while.c.gcov in .gcno file , skipping file! 
+2

Si prega di aggiungere la risposta come risposta alla propria domanda. L'ho trovato molto utile. – nwellnhof

+0

Ho aggiunto una risposta wiki della comunità qui sotto. Se l'autore torna a questa domanda, lui/lei può aggiungere la propria risposta e crogiolarsi nei premi. –

+0

Possibile duplicato di [generazione dei dati di copertura delle filiali per lcov] (http://stackoverflow.com/questions/12360167/generating-branch-coverage-data-for-lcov) – Hcorg

risposta

25

ho ricevuto l'e-mail da Peter Oberparleiter, l'autore di geninfo. Ho ottenuto la risposta come segue.

LCOV 1.10 ha copertura di diramazione disabilitata per impostazione predefinita. È possibile abilitarlo modificando il file lcovrc (vedere man lcovrc) o specificando --rc lcov_branch_coverage=1 quando si esegue lcov/genhtml.

Se non si utilizza LCOV 1.10 e non si ottiene ancora la copertura di filiali, è possibile che la versione di GCC non fornisca tali informazioni.

(La risposta di cui sopra è stato erroneamente aggiunto alla domanda da the author.)

11

la soluzione data sopra:

--rc lcov_branch_coverage=1 

utilizzato sia per lcov e GENHTML, ha lavorato per me.