欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

C/C++代码覆盖率统计:gcov/lcov/gcovr以及集成到jenkins

时间:2023-06-03

使用gcov/lcov或gcovr工具进行代码覆盖率统计时,都需要在编译选项中加入"-fprofile-arcs -ftest-coverage"两个选项,才能生成.gcno和gcda文件。

如果是CMAKE工程,则可以添加编译选项如下:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")

1、gcov

这是gcc自带的内建工具,不需要额外安装,使用起来比较简单,但是生成的报告可视效果比较差,简单了解一下。

2、lcov

Lcov是gcov的可视化前端,输出的是html格式的报告,类似下面这样:

ubuntu下需要安装lcov,最简单的方式就是通过apt-get方式安装:

sudo apt-get install lcov

功能比较多,有很多选项可供选择,具体可通过lcov --help查阅,这里记录一下基本操作。

lcov -d 、-c -o all.info # -d表示执行目录,-c表示捕获所有报告,-o表示输出到all.info中lcov -r all.info '/usr/*' 'thirdpart/*' -o coverage.info# -r表示排除哪些文件或路径(--remove),意思就是将初始生成的all.info做一下排除,得到coverage.infolcov -e all.info 'thirdpart/*' -o coverage.info# -e意思就跟上面相反,保留哪些文件(--extract),意思就是将all.info做一下筛选,得到coverage.infogenhtml -o result coverage.info# 最后一步就是将得到的.info文件生成最终的html结果,结果放在result文件夹中。

3、gcovr

功能跟lcov很类似,gcovr是python写的,安装我知道的有两种方式,一种还是apt-get方式安装(ubuntu下),另一种使用python的包管理工具pip install安装。

基本操作如下:

gcovr -r 、--html --html-details -o coverage.html

生成的报告打开如下:

4、怎么集成到jenkins CI中?

对于lcov,需要额外下载Jenkins插件:HTML Publisher,用来链接生成的报告。具体配置如下:

对于gcovr,需要额外下载Jenkins插件:Cobertura,用来链接生成的报告,且可以可视化构建的结果趋势。若要把gcovr集成到Jenkins,还需要将覆盖率报告转成XML格式,然后由Cobertura自动解析。

>运行gcovr

gcovr -r 、--xml -o build/coverage.xml

>配置Cobertura

>覆盖率结果和趋势

实际使用过程中发现,gcovr的代码覆盖显示存在部分问题,有的代码执行过了,颜色却标的不对,以后再深究!有什么问题可以在评论区留言,知无不言。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。