【问题标题】:CMake/CTest Code coverage checkCMake/CTest 代码覆盖率检查
【发布时间】:2014-06-18 13:03:26
【问题描述】:

我可以在this 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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-18
      • 2015-07-06
      • 2016-07-07
      • 2019-11-12
      • 2012-06-30
      • 2018-04-07
      • 1970-01-01
      相关资源
      最近更新 更多