【C++】统计代码覆盖率(三)分析

无情 阅读:121 2021-09-07 18:00:50 评论:0
本文章主要介绍了【C++】统计代码覆盖率(三),具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

报告集成到jenkins才是最终目的,因此又进行了部分资料查找,得到html和xml报告集成jenkins的配置如下:

一 集成html报告

这种方式集成在你已经用gcov+lcov生成了html报告的基础上,在此只需要将它放到jenkins中,步骤如下:

1 打开jenkins->进入工程->配置->增加构建后操作步骤->Publish HTML reports                                              

2 生成html报告:配置->增加构建步骤->Execute shell

  1. 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++
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号