【C++】统计代码覆盖率(三)
2016-07-04 12:03
726 查看
报告集成到jenkins才是最终目的,因此又进行了部分资料查找,得到html和xml报告集成jenkins的配置如下:
一 集成html报告
这种方式集成在你已经用gcov+lcov生成了html报告的基础上,在此只需要将它放到jenkins中,步骤如下:
1 打开jenkins->进入工程->配置->增加构建后操作步骤->Publish HTML reports
2 生成html报告:配置->增加构建步骤->Execute shell
3 运行完毕,即可在jenkins页面左侧和中上侧看到THML Report 点开即可查看详情,如下
二 集成Cobertura的xml报告
集成到Cobertura与集成到html类似,都需要配置构建后步骤和Execute shell,如下
1 jenkins的Cobertura插件
1) jenkins安装插件Cobertura: jenkins页面->系统管理->管理插件,可在该页面搜索安装插件Cobertura
2)在工程的配置中,增加构建后操作步骤->Publish Cobertura Coverage Report
3) 配置Cobertura
2 配置Execute shell,得到xml文件
1)在jenkins的工程配置中增加构建步骤->Execute shell
2)在jenkins构建后即可查看结果
三 问题
1 jenkins配置后生成xml报告失败,报错如下:
原因:jenkins路径未关联,具体我也还没搞清楚,貌似Cobertura只能使用相对路径。将生成的xml报告更改为目录/data/AdServerTest下的目录即可 路径后即可。
2 在查看详细报告时,无法查看具体代码行数覆盖,提示Source code is unavailable,如下:
原因:怀疑是jenkins路径的缘故,存放xml文件的路径下并没有源码,具体我还没解决,后续补充
解决:我加载的coverage.xml文件目录为/data/AdServer/reports/coverag.xml目录,源码目录为/data/jenkins/workspace/sourceCode,该文件起始部分如下:
因此不能显示源码,更改生成xml文件时表示源码路径的'.'为绝对路径即可:sudo gcovr --xml-pretty -r /data/jenkins/workspace/sourceCode/ --output /data/AdServerTest/coverage.xml
得到结果图如下,覆盖部分为绿色,未覆盖部分为红色:
一 集成html报告
这种方式集成在你已经用gcov+lcov生成了html报告的基础上,在此只需要将它放到jenkins中,步骤如下:
1 打开jenkins->进入工程->配置->增加构建后操作步骤->Publish HTML reports
2 生成html报告:配置->增加构建步骤->Execute shell
cd your_path sh exittest.sh(上一节中exit程序的脚本) cd your_gcda_gcno_path lcov -c -o coverage.info -b . -d . genhtml coverage.info -o coverage cp coverage_result /data/report/coverage #注意该路径与html报告的读取路径一致
3 运行完毕,即可在jenkins页面左侧和中上侧看到THML Report 点开即可查看详情,如下
二 集成Cobertura的xml报告
集成到Cobertura与集成到html类似,都需要配置构建后步骤和Execute shell,如下
1 jenkins的Cobertura插件
1) jenkins安装插件Cobertura: jenkins页面->系统管理->管理插件,可在该页面搜索安装插件Cobertura
2)在工程的配置中,增加构建后操作步骤->Publish Cobertura Coverage Report
3) 配置Cobertura
2 配置Execute shell,得到xml文件
1)在jenkins的工程配置中增加构建步骤->Execute shell
sudo sh /data/ad_server/exittest.sh cd your_code_path sudo gcovr --xml-pretty -r . --output /data/AdServerTest/coverage.xml
2)在jenkins构建后即可查看结果
三 问题
1 jenkins配置后生成xml报告失败,报错如下:
[Cobertura] No coverage results were found using the pattern '/data/cppcoverage/xml/coverage.xml' relative to '/data/AdServerTest'. Did you enter a pattern relative to the correct directory? Did you generate the XML report(s) for Cobertura?
原因:jenkins路径未关联,具体我也还没搞清楚,貌似Cobertura只能使用相对路径。将生成的xml报告更改为目录/data/AdServerTest下的目录即可 路径后即可。
2 在查看详细报告时,无法查看具体代码行数覆盖,提示Source code is unavailable,如下:
原因:怀疑是jenkins路径的缘故,存放xml文件的路径下并没有源码,具体我还没解决,后续补充
解决:我加载的coverage.xml文件目录为/data/AdServer/reports/coverag.xml目录,源码目录为/data/jenkins/workspace/sourceCode,该文件起始部分如下:
<coverage branch-rate="0.480959479604" line-rate="0.791099668996" timestamp="1486278598" version="gcovr 3.2"> <sources> <source> . //表示会从当前目录读取源码-source code </source> </sources>
因此不能显示源码,更改生成xml文件时表示源码路径的'.'为绝对路径即可:sudo gcovr --xml-pretty -r /data/jenkins/workspace/sourceCode/ --output /data/AdServerTest/coverage.xml
<coverage branch-rate="0.480959479604" line-rate="0.791099668996" timestamp="1486278598" version="gcovr 3.2"> <sources> <source> /data/jenkins/workspace/sourceCode/</source> </sources>
得到结果图如下,覆盖部分为绿色,未覆盖部分为红色:
相关文章推荐
- 关于c++中的this指针
- 字典序全排列(非递归方法)
- cpp blog上面看到一哥们写的 下拉列表
- C++面试题之数a、b的值互换(不使用中间变量)
- C++文件操作:打开文件和写入文件
- 图文详解C语言位运算基础知识
- 禁止形参未引用警告
- [编程语言][C语言]指针与地址
- C语言单向链表
- 创建文件并读取其中数据 int 型
- Effective C++: std::bind和std::function.
- C++ 抽象类一(多继承与赋值兼容性原则)
- 查找算法
- c和c++在windows下获取时间和计算时间差的方法总结
- C/C++代码覆盖率工具gcov、lcov
- C++ Builder 在指定目录下查找指定文件
- 宏定义中使用do{}while(0)的好处
- C++之类和对象的使用(二)
- java与C/C++字节顺序区别
- C++虚函数和虚表