LCOV:无法收集分支覆盖的统计信息 [英] Lcov: can not collect branch coverage statistics

查看:4397
本文介绍了LCOV:无法收集分支覆盖的统计信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆