我可以在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
?
答案 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