jacoco代码覆盖率原理_代码生成器免费版

(3) 2024-09-22 21:12

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/

jacoco代码覆盖率原理_代码生成器免费版_https://bianchenghao6.com/blog__第1张

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

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复