【C++】统计代码覆盖率(三)
报告集成到jenkins才是最终目的,因此又进行了部分资料查找,得到html和xml报告集成jenkins的配置如下:
一 集成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="" 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="" version="gcovr 3.2">
<sources>
<source>
/data/jenkins/workspace/sourceCode/</source>
</sources>
得到结果图如下,覆盖部分为绿色,未覆盖部分为红色:

【C++】统计代码覆盖率(三)的更多相关文章
- 【C++】统计代码覆盖率(二)
嗷嗷嗷!!!好激动,我好蠢.不过最后还是解决了.呜呜呜 有些都是东一块西一块查的,如果有侵权欢迎私信我,我注明出处. 一 gcov&CMake 昨天试了下测试代码和被测代码都是c++的情况,直 ...
- Jacoco远程统计代码覆盖率
Jacoco 什么是Jacoco? Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAg ...
- 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化
1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...
- jacoco+ant安装部署篇(统计代码覆盖率,适用自动化测试)
1:什么是jacoco? JaCoCo是一个开源的覆盖率工具(官网地址:http://www.eclemma.org/JaCoCo/),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant. ...
- Python实现C代码统计工具(三)
目录 Python实现C代码统计工具(三) 声明 一. 性能分析 1.1 分析单条语句 1.2 分析代码片段 1.3 分析整个模块 二. 制作exe Python实现C代码统计工具(三) 标签: Py ...
- C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...
- Hadoop MapReduce编程 API入门系列之薪水统计(三十一)
不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.SalaryCount; import java.io.IOException; import jav ...
- 分析统计<第三篇>
统计是一组存储为柱状图的信息.柱状图是显示数据落入不通分类中的频率的一种统计结构.SQL Server存储的柱状图包括多大200行的列和索引键(或多列索引键的第一列)的数据分布采样.在两个连续采样值之 ...
- 统计学习三:1.k近邻法
全文引用自<统计学习方法>(李航) K近邻算法(k-nearest neighbor, KNN) 是一种非常简单直观的基本分类和回归方法,于1968年由Cover和Hart提出.在本文中, ...
随机推荐
- 一起简单写一下AIDL,入个门
前话 最近接触了Android开发的一个新知识,AIDL(¬_¬因为到现在都没用过) 因此不断谷歌找资料找Demo,自己尝试写一下. 因为用AndroidStudio作为开发环境,期间遇到过许多问题, ...
- Hibernate笔记——表的的4种继承关系
原文:http://justsee.iteye.com/blog/1070588 ===================================== 一.继承关系_整个继承树映射到一张表 对象 ...
- Linux系统PATH变量配置
alias命令用于设置命令的别名,格式为“alias 别名=命令” 例如担心复制文件时误将文件被覆盖,可以执行alias cp=" cp -i",如此一来 每次复制命令都会询问用户 ...
- SGU 149 Computer Network 树DP/求每个节点最远端长度
一个比较经典的题型,两次DFS求树上每个点的最远端距离. 参考这里:http://hi.baidu.com/oi_pkqs90/item/914e951c41e7d0ccbf904252 dp[i][ ...
- C#基础(二)
变量的命名规则: 1.变量名由字母,数字 ,下划线组成.@ 中文 2.首字母,不能是数字 3.不能与关键字重名 变量的定义 语法: 数据类型 变量名[=值]; int a; //只定义变量 ...
- 如何通过 jQuery text() 和 html()
text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 $("#btn1").c ...
- 感谢大家的支持,发布一个JWFD的补丁文件
请用这个文件覆盖原来的JWFD开发包里面的同名文件,然后删除JWFD目录下面的那个FLOWTREE.OBJ 文件 然后重启JWFD.... 这个补丁修正了 流程图设计器-树型列表的几个BUG,因为有 ...
- MongoDB 学习笔记(三) MongoDB (replica set) 集群配置
MongoDB Replica Sets的结构类似于以集群,完全可以把他当成一个集群,因为他确实与集群实现的作用是一样的:如果其中一个节点出现故障,其他的节点会马上将业务接管过来.而无需停机操作 Mo ...
- 【Todo】Kerberos、OpenSSL、OAuth2.0等一系列验证权限安全相关学习
Kerberos可以先从这一篇开始: http://idior.cnblogs.com/archive/2006/03/20/354027.html
- orm 通用方法——GetOneModel 条件查询一个对象
数据连接层的方法封装成通用方法是很有必要,节省不必要的重复写代码. Golang的orm.xorm框架没有封装这些操作. 这里是一个查询单个对象的方法. 此处抛砖引玉,大家继续完善. 通用方法定义代码 ...