LCOV:无法收集分支覆盖的统计信息 [英] Lcov: can not collect branch coverage statistics
问题描述
我用 LCOV
以创建在我的项目覆盖信息。但我只能得到线覆盖范围和覆盖功能的统计信息。
LCOV版本:1.10,gcov的版本:4.4.5
我使用的命令是:
LCOV -d $ OSPL_HOME / src目录-d $ OSPL_OUTER_HOME / src目录-c -o /work/li/log/lcov-raw.infoLCOV -r /work/li/log/lcov-raw.info* .ll* .yy* .yy.cyaccparTAO161 */ usr / include目录/ *,* /测试套件/ *-o /work/li/log/lcov.info
这两个命令后,我得到的结果是:
删除23个文件写数据到/work/li/log/lcov.info摘要覆盖率: 行......:45.4%(143496的65087行) 功能..:46.1%(12102的5575函数) **分行...:未发现数据**
所以没有分支的覆盖效果。为什么?所以发生了什么事?怎么能这样呢?我在这里混淆。
第一个命令后,我得到了很多这样的警告:
geninfo:警告:.gcno文件无法找到一个条目..#..#code#accum.c.gcov,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#at.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#autodef.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#copyof.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#debug.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#define.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#dump.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#error.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#expand.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#expr.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#if.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#include.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#io.c.gcov一个条目,S基平的文件!
geninfo:警告:找不到.gcno文件..#..#code#is.c.gcov一个条目,S基平的文件!
geninfo:警告:找不到.gcno文件..#..#code#line.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#pragma.c.gcov一个条目,跳过的文件!
geninfo:警告:.gcnofile找不到一个条目..#..#code#preprocess.c.gcov,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#set.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#sharp.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#symtbl.c.gcov一个条目,跳过的文件!
geninfo:警告:找不到.gcno文件..#..#code#undef.c.gcov一个条目,跳过的文件!
geninfo:警告:无法找到一个条目..#..#code#while.c.gcov在.gcno文件,跳过的文件!
我从彼得Oberparleiter,geninfo笔者拿到的电子邮件。我得到的回答如下。
1.10 LCOV已分支覆盖每个默认为禁用。您可以通过修改lcovrc文件来启用它(参见男人lcovrc
),或通过指定 - RC lcov_branch_coverage = 1
时运行 LCOV / GENHTML
。
如果你不使用LCOV 1.10,仍然没有得到分支覆盖,它可能是你的GCC版本不提供此信息。
(上面的答案被错误地加入到这个问题由笔者。的)
I used the lcov
to create coverage information in my project. But I only can get line coverage and function coverage statistics information.
lcov version:1.10, gcov version:4.4.5
The commands I used is:
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
After these two commands, I got the results is:
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**
So there were no branches coverage results. Why? So what happened? And how can this happen? I am confused here.
After the first command, I got lots of warnings like these:
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!
I got the email from Peter Oberparleiter, the author of geninfo. I got the answer as following.
LCOV 1.10 has branch coverage disabled per default. You can enable it by modifying the lcovrc file (see man lcovrc
) or by specifying --rc lcov_branch_coverage=1
when running lcov/genhtml
.
If you're not using LCOV 1.10 and still don't get branch coverage, it may be that you're version of GCC does not provide this information.
(The above answer was erroneously added to the question by the author.)
这篇关于LCOV:无法收集分支覆盖的统计信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!