加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – CMake / CTest代码覆盖率检查

发布时间:2020-12-16 07:09:06 所属栏目:百科 来源:网络整理
导读:我可以在 this维基页面之后使用cmake进行覆盖检查.这非常简单,设置一个仪表板,我可以在浏览器上查看代码覆盖率(后一部分).但我不想每次只测试单个文件的进度.实际上,我想在本地检查子目录的代码覆盖率而不是使用第三方代码的enitre库. 那么,我们如何检查子目
我可以在 this维基页面之后使用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”.

现在回到这个问题,我怎样才能检查A类的覆盖范围.没有运行所有测试或只运行testA?

解决方法

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

该脚本允许您准确指定要从中收集代码覆盖率的文件(与大多数允许您排除文件的脚本相比).所以你可以提交(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读