用于生成LCOV分支覆盖数据(generating branch coverage data for

2019-07-31 12:22发布

我想要使​​用的代码覆盖率度量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的功能)
树枝...:发现没有数据

有任何想法吗?

Answer 1:

默认情况下,最新版本LCOV禁用分支覆盖的。

您需要通过要么重新启用它:

  • 编辑~/.lcovrc文件(从/ etc / lcovrc复制)来改变lcov_branch_coverage设置为1
  • 加入--rc lcov_branch_coverage=1到您LCOV命令行


Answer 2:

.lcovrc文件是需要在LCOV文件的路径将设置文件。 坦率地说,我没有研究太多关于使用该文件。

您需要添加额外的参数作为“--rc lcov_branch_coverage = 1” LCOV 所有呼叫 。 在你的情况下,这个参数添加到您的所有三个电话。 如果你错过了一个,它会掉落分支覆盖。

还需要GENHTML --branch覆盖。



Answer 3:

对不起,没有那么多的“想法”为你正确地做每件事的确认。 你确切的命令工作在这个简单的代码:

#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?



Answer 4:

在此基础上后 ,差异可能取决于GCC的版本所使用。 你可以分享你正在使用的版本。 我没有得到分支覆盖上:

 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)


文章来源: generating branch coverage data for lcov