Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
jacoco代码覆盖率原理_代码生成器免费版,希望能够帮助你!!!。
Jacoco
什么是Jacoco?
Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。
软件安装
Ant
Jacoco 在官网上下载Jacoco,官网地址:http://www.eclemma.org/jacoco/
1. 在部署的tomcat服务中,/bin/catalina.sh中JAVA_OPTS参数值添加。
file:
-javaagent:/app/jacoco/jacocoagent.jar=destfile=/tmp/jacoco.exec,append=true,includes=*,output=file"
tcpserver:
-javaagent:/app/jacoco/jacocoagent.jar=includes=*,output=tcpserver,port=1111,,append=false,address=10.100.139.91
其中:/app/jacoco/jacocoagent.jar为安装jacoco的jacocoagent.jar包绝对路径;output覆盖率数据输出的形式,有file, tcpserver, tcpclient, 默认是file,file是在jvm停掉时才将覆盖率数据dump出来;address和port可以提供client访问,并dump出覆盖率数据文件, 在build.xml会使用。
如果用file的方式获得覆盖率的话,需要shutdown tomcat,执行./shutdown.sh ,如果不行的话,执行kill但是千万不能执行kill -9。执行完kill后,会把覆盖率dump到jacoco.exec
2. 启动tomcat服务,sh /bin/startup.sh
3. 编写build.xml
<?xml version="1.0" ?>
<project name="coverage" xmlns:jacoco="antlib:org.jacoco.ant" >
<!--Jacoco的安装路径-->
<property name="jacocoantPath" value="/app/jacoco/jacocoant.jar"/>
<!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
<property name="jacocoexecPath" value="/tmp/jacoco/xxx/jacoco.exec"/>
<!--生成覆盖率报告的路径-->
<property name="reportfolderPath" value="/tmp/jacoco/xxx.com/report/"/>
<!--远程tomcat服务的ip地址-->
<property name="server_ip" value="10.100.139.91"/>
<!--前面配置的远程tomcat服务打开的端口,要跟上面配置的一样-->
<property name="server_port" value="1111"/>
<!--源代码路径可以包含多个源代码-->
<property name="webSrcpath" value="/app/export/jenkins/workspace/xxx.com/src" />
<!--.class文件路径可以包含多个-->
<property name="webClasspath" value="/app/export/servers/tomcat-7.0.62/webapps/phenix/WEB-INF/classes"/>
<!--让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="true" destfile="${jacocoexecPath}" port="${server_port}" append="false"/>
</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="utf-8">
<fileset dir="${webSrcpath}" />
</sourcefiles>
</group>
</structure>
<html destdir="${reportfolderPath}" encoding="utf-8" />
</jacoco:report>
</target>
</project>
如果你的web工程里面还引入了别的工程,例如你现在tomcat所部署的war包只是web的入口,实际的逻辑,模型等都作为jar包放在这个工程的lib里面的时候,此时你又要统计这些逻辑模型的代码覆盖率,那么你需要做的是:1、把lib中你需要统计覆盖率的jar包解压出来;2、把jar包对应的源代码上传上去;3、build.xml中structure下面建立多个group,对应的源文件和类文件也要新增进去;
4. 在build.xml所在的目录执行下面命令t将会把报告输出到相应的目录下面
/app/export/servers/apache-ant-1.9.7/bin/ant dump
/app/export/servers/apache-ant-1.9.7/bin/ant report
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章