Jacoco
 
什么是Jacoco?
Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。
 
Jacoco远程统计tomcat服务的代码覆盖率
 
软件安装
Ant
Jacoco
 
Ant 安装步骤
由于服务器上已经安装了Ant,所以没有亲自安装过在Linux服务器上,百度上有好多文章,可以搜一下,下面就给出一个参考链接
 
Jacoco安装步骤
下载下来,随意放在一个目录,解压
在官网上下载Jacoco,官网地址:http://eclemma.org/jacoco/
unzip jacoco-0.7.6-20151002.081900-29.zip
 
Tomcat配置
1、进入你需要统计代码覆盖率的tomcat  
cd /home/work/tomcat_8998_launch_feed_1/bin
2、先关闭这个tomcat的服务
正常情况下可以直接执行  ./shutdown.sh
执行结束后 ps -ef|grep 端口号 查看是否已经正常关闭,如果还没有关闭 kill -9 pid(来源于ps的结果)
3、修改 catalina.sh  的JAVA_OPTS配置
JAVA_OPTS="$JAVA_OPTS -javaagent:/home/work/zj/jacoco/lib/jacocoagent.jar=includes=*,output=file,append=true,destfile=/home/work/zj/jacoco/target/jacoco.exec"
具体参数的意思请查看官方文档
4、启动服务 ./startup.sh
5、查看一下JAVA_OPTS是否有修改正确,我掉在这个坑里了,有一种情况是你把JAVA_OPTS写在前面,在后面被别人的覆盖了
ps -ef|grep 端口号 看出来的结果有没有刚才你修改的值
 
 
Ant配置
随意进入一个目录新建build.xml,build.xml见附件
 <?xml version="1.0" ?>
<project name="coverage" xmlns:jacoco="antlib:org.jacoco.ant" >
<!--Jacoco的安装路径-->
<property name="jacocoantPath" value="/home/work/zj/jacoco/lib/jacocoant.jar"/>
<!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
<property name="jacocoexecPath" value="/home/work/zj/jacoco/target/jacoco.exec"/>
<!--生成覆盖率报告的路径-->
<property name="reportfolderPath" value="/home/work/zj/jacoco/report/"/>
<!--远程tomcat服务的ip地址-->
<property name="server_ip" value="10.99.30.64"/>
<!--前面配置的远程tomcat服务打开的端口,要跟上面配置的一样-->
<property name="server_port" value="8998"/>
<!--源代码路径可以包含多个源代码-->
<property name="webSrcpath" value="/home/work/zj/adp-feed-access-web/src/main/java/" />
<property name="businessSrcpath" value="/home/work/zj/adp-feed-access-business-delivery/src/main/java/"/>
<property name="commonSrcpath" value="/home/work/zj/adp-feed-access-business-common/src/main/java/"/>
<property name="uasSrcpath" value="/home/work/zj/uas-pbrpc4j/src/main/java/"/>
<!--.class文件路径可以包含多个-->
<property name="webClasspath" value="/home/work/local/adp_launch_feed_1/ROOT/WEB-INF/classes/"/>
<property name="businessClasspath" value="/home/work/local/adp_launch_feed_1/ROOT/WEB-INF/lib/adp-feed-access-business-delivery/"/>
<property name="commonClasspath" value="/home/work/local/adp_launch_feed_1/ROOT/WEB-INF/lib/adp-feed-access-business-common/"/>
<property name="uasClasspath" value="/home/work/local/adp_launch_feed_1/ROOT/WEB-INF/lib/uas-pbrpc4j/"/> <!--让ant知道去哪儿找Jacoco-->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoantPath}" />
</taskdef> <!--dump任务:
根据前面配置的ip地址,和端口号,
访问目标tomcat服务,并生成.exec文件。--> <target name="dump">
<jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="true"/>
</target> <!--jacoco任务:
根据前面配置的源代码路径和.class文件路径,
根据dump后,生成的.exec文件,生成最终的html覆盖率报告。--> <target name="report">
<delete dir="${reportfolderPath}" />
<mkdir dir="${reportfolderPath}" /> <jacoco:report>
<executiondata>
<file file="${jacocoexecPath}" />
</executiondata> <structure name="JaCoCo Report">
<group name="Launch related">
<classfiles>
<fileset dir="${webClasspath}" />
</classfiles>
<sourcefiles encoding="gbk">
<fileset dir="${webSrcpath}" />
</sourcefiles>
</group>
<group name="Business related">
<classfiles>
<fileset dir="${businessClasspath}" />
</classfiles>
<sourcefiles encoding="gbk">
<fileset dir="${businessSrcpath}" />
</sourcefiles>
</group>
<group name="Common related">
<classfiles>
<fileset dir="${commonClasspath}" />
</classfiles>
<sourcefiles encoding="gbk">
<fileset dir="${commonSrcpath}" />
</sourcefiles>
</group>
</structure> <html destdir="${reportfolderPath}" encoding="utf-8" />
</jacoco:report>
</target>
</project>
需要注意的点:
1、需要上传源代码到服务器 
2、如果你的web工程里面还引入了别的工程,例如你现在tomcat所部署的war包只是web的入口,实际的逻辑,模型等都作为jar包放在这个工程的lib里面的时候,
此时你又要统计这些逻辑模型的代码覆盖率,那么你需要做的是:1、把lib中你需要统计覆盖率的jar包解压出来;2、把jar包对应的源代码上传上去;3、build.xml中
structure下面建立多个group,对应的源文件和类文件也要新增进去;
 
 
覆盖率报告
1、由于我使用的是file的方式,因此需要获得覆盖率的话,需要shutdown tomcat,执行./shutdown.sh ,如果不行的话,执行kill但是千万不能执行kill -9
执行完kill后,会把覆盖率dump到jacoco.exec
2、在build.xml所在的目录执行ant report将会把报告输出到相应的目录下面
3、在报告所在的目录直接打开index.html将会看到所有的覆盖率,如果想在线查看report的话,可以在nginx或者tomcat下搭建
 
 
参考文档

Jacoco远程统计代码覆盖率的更多相关文章

  1. Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率

    Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率 2017-09-21 目录 1 Jacoco的安装和设置  1.1 什么是Jacoco?  1.2 Jacoco安装  1.3 ...

  2. 【转载收藏】使用Jacoco远程统计tomcat服务的代码覆盖率

    在做软件开发的时候经常会遇到做各种测试,这里介绍一种本人遇到的:代码覆盖率测试, 这个测试非常实用,能发现许多无效的模块和代码.强烈推荐!!!!! 网上好多资料都不全,而且没有详细的配置流程 本文将简 ...

  3. jacoco + ant远程统计(tomcat/spring boot)服务的代码覆盖率

    什么是Jacoco? Jacoco(java code coverage)是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件, ...

  4. jacoco+ant安装部署篇(统计代码覆盖率,适用自动化测试)

    1:什么是jacoco? JaCoCo是一个开源的覆盖率工具(官网地址:http://www.eclemma.org/JaCoCo/),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant. ...

  5. 【C++】统计代码覆盖率(二)

    嗷嗷嗷!!!好激动,我好蠢.不过最后还是解决了.呜呜呜 有些都是东一块西一块查的,如果有侵权欢迎私信我,我注明出处. 一 gcov&CMake 昨天试了下测试代码和被测代码都是c++的情况,直 ...

  6. maven项目使用jacoco插件检测代码覆盖率详细配置

    使用maven构建项目(java项目或者web项目都可以) jacoco插件的配置参考官方网址:http://www.eclemma.org/jacoco/trunk/doc/maven.html ( ...

  7. jenkins使用jacoco插件检测代码覆盖率(八)

    代码覆盖率:类覆盖,方法覆盖,行覆盖,指令覆盖……(简而言之,就是判断有没有被执行) 覆盖率 = 已经执行的代码 / 总代码 (1)创建maven项目,配置pom.xml如下 pom.xml < ...

  8. ant+sonar+jacoco代码质量代码覆盖率扫描

    使用ant构建的java web项目如何做sonar代码质量扫描?以下就是实际遇到并成功使用的案例一.做sonar扫描的准备工作    1.给web项目增加build.xml构建脚本.    2.下载 ...

  9. 【C++】非原创|统计代码覆盖率(一:C++)

    也是转别人的,因为我c++好菜好菜啊... http://blog.chinaunix.net/uid-23741326-id-3316943.html c++跟C基本是一样的,统计覆盖率,需要生成g ...

随机推荐

  1. python—命名规范(转)

    文件名全小写,可使用下划线 包应该是简短的.小写的名字.如果下划线可以改善可读性可以加入.如mypackage. 模块与包的规范同.如mymodule. 类总是使用首字母大写单词串.如MyClass. ...

  2. .NET framework 4.0安装失败怎么办

    开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ   开始——运行——输入%windir%找到有个叫SoftwareDistribution的文件夹,把它重命 ...

  3. P1082 找朋友

    描述 童年的我们,对各种事物充满了好奇与向往.这天,小朋友们对数字产生了兴趣,并且想和数字交朋友.可是,怎么分配这些数字才能使得每个小朋友都唯一地找到一个数字朋友呢?C小朋友说:咱们按自己名字的字典序 ...

  4. BZOJ 3198 SDOI2013 spring

    为什么SDOI省选一年考两次容斥原理? 我们很容易发现>=k个相等时很好计算的 但是我们要求恰好k个,那么我们容斥即可 至于计算>=k个相等,首先我们枚举相等位置,对每个串对应位置做一遍h ...

  5. Python中的SET集合操作

    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...

  6. ubuntu 折腾之路

    aptitude search :search for the lib...and their realtions. apt-get install :install the app apt-get ...

  7. 实例学习写Makefile文件

    目录 0. 扫盲 1. 编译,链接 2. Makefile文件执行 3. Makefile书写规则 4. 案例 5. Makefile是如何工作的 6. 拔高,参考 0. 扫盲 Linux 环境下的程 ...

  8. libXml ARC forbids explicit message send of'release'

    'release' is unavailable: not available in automatic reference counting mode ARC forbids explicit me ...

  9. C#中Dictionary的用法及用途

    Dictionary<string, string>是一个泛型 他本身有集合的功能有时候可以把它看成数组 他的结构是这样的:Dictionary<[key], [value]> ...

  10. poj 1151 Atlantis (离散化 + 扫描线 + 线段树 矩形面积并)

    题目链接题意:给定n个矩形,求面积并,分别给矩形左上角的坐标和右上角的坐标. 分析: 映射到y轴,并且记录下每个的y坐标,并对y坐标进行离散. 然后按照x从左向右扫描. #include <io ...