我使用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!
答案 0 :(得分:28)
我收到了geninfo的作者Peter Oberparleiter的电子邮件。我的答案如下:
LCOV 1.10默认禁用分支覆盖范围。您可以通过修改lcovrc文件(请参阅man lcovrc
)或在运行--rc lcov_branch_coverage=1
时指定lcov/genhtml
来启用它。
如果您没有使用LCOV 1.10且仍未获得分支机构覆盖,则可能是您的GCC版本未提供此信息。
( the author错误地将上述答案添加到问题中。)
答案 1 :(得分:11)
上面给出的解决方案:
--rc lcov_branch_coverage=1
用于lcov和genhtml,为我工作。