4

我可以在这个wiki 页面之后使用 cmake 运行覆盖率检查。这非常简单,并且设置仪表板可以很好地查看浏览器上的代码覆盖率(后半部分)。但我不想每次都为了检查单个文件的进度而进行 ctest。事实上,我想在本地检查子目录的代码覆盖率,而不是使用第三方代码检查整个库。

那么,我们如何检查子目录的代码覆盖率。当然,我在 cmakelists.txt 中使用 add_test(....) 编写了一个测试。

我将尝试在没有任何代码的情况下稍微解释一下。

Class A {   
public:    
    A() {}

....     
so many methods ..
....

protected:
    ~A() {} 
}; //end class A

接下来我写了一个测试:

//testA
int main()
{
    A *a = new A();

    a->method1();

    a->method2();
    ...
}

现在在 CMakeLists.txt 中,我有:

add_test(testA ...)

因此,当我运行 ctest 时,它将运行所有测试,包括TestA. 当然,我可以使用ctest -R "TestA".

现在回到这个问题,我如何才能检查class A仅覆盖范围。不运行所有测试还是只运行testA

4

1 回答 1

2

我创建了一个 cmake 脚本,它生成用于http://coveralls.io/服务的覆盖数据(开源项目免费)。

该脚本允许您准确指定要从中收集代码覆盖率的文件(与大多数允许您排除文件的脚本相比)。因此,您可以file(GLOB选择您感兴趣的文件或手动指定它们。也可以修改此脚本以简单地运行 lcov 并生成本地 html 报告。

https://github.com/JoakimSoderberg/coveralls-cmake https://github.com/JoakimSoderberg/coveralls-cmake-example

如果您对http://coveralls.io/不感兴趣,这里有另一个脚本,它使用 lcov 来简单地生成本地 html 报告:

https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake

于 2015-01-23T17:57:06.360 回答