CMake / CTest代码覆盖率检查

时间:2014-06-18 13:03:26

标签: c++ testing cmake code-coverage ctest

我可以在this wiki页面后使用cmake进行覆盖检查。这非常简单,设置一个仪表板,我可以在浏览器上查看代码覆盖率(后一部分)。但我不想每次只是为了检查单个文件的进度来测试。实际上,我想在本地检查子目录的代码覆盖率而不是使用第三方代码的enitre库。

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

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

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

1 个答案:

答案 0 :(得分:1)

我创建了一个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