我试图使用lcov作为代码覆盖率度量标准,但我无法让分支覆盖率正常工作。
下面是我使用它的方式:
g++ -ggdb3 --coverage src/read.c tests/test.cpp -o bin/test
lcov --zerocounters --directory $PWD
lcov --capture --initial --directory $PWD --output-file coverage_output
./bin/test
lcov --no-checksum --directory $PWD --capture --output-file coverage_output
genhtml --branch-coverage --highlight --legend --output-directory out coverage_output但我明白:
总覆盖率: 线.:100.0% (60 / 60行) 职能: 100.0% (26个职能中的26个) 没有发现任何数据
有什么想法吗?
发布于 2013-01-25 14:14:50
默认情况下,LCOV的最新版本禁用分支覆盖。
您需要通过以下两种方法重新启用它:
~/.lcovrc文件(从/etc/lcovrc复制)将lcov_branch_coverage设置更改为1--rc lcov_branch_coverage=1添加到lcov命令行发布于 2014-07-30 07:08:39
.lcovrc文件是需要放置在lcov文件路径中的设置文件。坦白地说,我对这个文件的使用没有太多的研究。
您需要为所有调用lcov_branch_coverage=1向lcov 添加额外的参数"--rc “。在您的示例中,将此参数添加到所有三个调用中。如果你错过了一个,它就会降低分支机构的覆盖范围。
还需要对genhtml进行分支覆盖。
发布于 2012-09-11 14:54:21
对不起,与其说是“想法”,不如说是确认你做的一切都是正确的。您的确切命令适用于以下简单代码:
#include <iostream>
using namespace std;
bool foo(int i)
{
if (i != 0) {
return 12 / i;
} else {
return 0;
}
}
int main(int argc, char** argv)
{
cout << foo(argc) << endl;
return 0;
}lcov覆盖表包含行、函数和分支的统计信息。也许你会再次检查你是否看到了正确的HTML输出?
https://stackoverflow.com/questions/12360167
复制相似问题