2012-11-14 242 views
20

我使用lcov在我的项目中创建覆盖率信息。但我只能得到线路覆盖和功能覆盖统计信息。Lcov:无法收集分支机构覆盖率统计信息

lcov version:1.10, gcov version:4.4.5 

我使用的命令是:

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 

这两个命令后,我得到的结果是:

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

所以没有分支的覆盖效果。为什么?所以发生了什么事?这又如何发生?我很困惑。

第一个命令后,我得到了很多像这样的警告:

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

请添加答案作为你自己的问题的答案。我发现它非常有帮助。 – nwellnhof

+0

我在下面添加了社区wiki答案。如果作者回到这个问题,他/她可以添加自己的答案,并获得回报。 –

+0

[为lcov生成分支覆盖数据]的可能重复(http://stackoverflow.com/questions/12360167/generating-branch-coverage-data-for-lcov) – Hcorg

回答

25

我从彼得Oberparleiter,geninfo笔者得到了电子邮件。我的答案如下。

LCOV 1.10默认情况下禁用分支覆盖。您可以通过修改lcovrc文件(请参阅man lcovrc)或在运行lcov/genhtml时指定--rc lcov_branch_coverage=1来启用它。

如果您未使用LCOV 1.10,但仍未获得分支机构覆盖范围,则可能是因为您的GCC版本不提供此信息。

以上回答了一个错误,the author加入到这个问题)以上

11

解决方案给出:

--rc lcov_branch_coverage=1 
既用于LCOV和GENHTML

,为我工作。