2012-11-14 32 views
20

Użyłem lcov do utworzenia informacji o pokryciu w moim projekcie. Ale mogę uzyskać tylko informacje o zasięgu linii i zasięgu funkcji.Lcov: nie można zbierać statystyk zasięgu gałęzi

lcov version:1.10, gcov version:4.4.5 

Komendy użyłem to:

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 

Po tych dwóch komend, mam wyniki to:

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** 

Więc nie znaleziono pokrycia gałęzie. Czemu? Więc co się stało? I jak to się może stać? Jestem zdezorientowany tutaj.

Po pierwszym poleceniu, mam mnóstwo ostrzeżeń, takie jak:

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

Proszę dodać odpowiedź jako odpowiedź na własne pytanie. Znalazłem to bardzo pomocne. – nwellnhof

+0

Dodałem poniżej społecznościową odpowiedź wiki. Jeśli autor kiedykolwiek powróci na to pytanie, może dodać własną odpowiedź i wygrzewać nagrody. –

+0

Prawdopodobny duplikat [generowania danych dotyczących zasięgu gałęzi dla lcov] (http://stackoverflow.com/questions/12360167/generating-branch-coverage-data-for-lcov) – Hcorg

Odpowiedz

25

Dostałem maila od Peter Oberparleiter, autora geninfo. Otrzymałem odpowiedź w następujący sposób.

LCOV 1.10 ma domyślnie wyłączone pokrycie sieci. Możesz go włączyć, modyfikując plik lcovrc (zobacz man lcovrc) lub podającpodczas uruchamiania lcov/genhtml.

Jeśli nie korzystasz z LCOV 1.10 i nadal nie masz zasięgu oddziału, być może wersja GCC nie dostarcza tych informacji.

(Powyższa odpowiedź została błędnie dodany do pytania o the author.)

11

rozwiązanie podane powyżej:

--rc lcov_branch_coverage=1 

używane zarówno dla lcov i genhtml, pracował dla mnie.