我想要使用的代码覆盖率度量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的功能)
树枝...:发现没有数据
有任何想法吗?
.lcovrc文件是需要在LCOV文件的路径将设置文件。 坦率地说,我没有研究太多关于使用该文件。
您需要添加额外的参数作为“--rc lcov_branch_coverage = 1” LCOV 所有呼叫 。 在你的情况下,这个参数添加到您的所有三个电话。 如果你错过了一个,它会掉落分支覆盖。
还需要GENHTML --branch覆盖。
对不起,没有那么多的“想法”为你正确地做每件事的确认。 你确切的命令工作在这个简单的代码:
#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?
在此基础上后 ,差异可能取决于GCC的版本所使用。 你可以分享你正在使用的版本。 我没有得到分支覆盖上:
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)