ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二开Jacoco + codediff 实现增量覆盖率报告

2022-05-02 16:00:31  阅读:227  来源: 互联网

标签:springbootdemo codediff 二开 -- jar jacoco https report Jacoco


一、教学视频:https://www.bilibili.com/video/BV1tr4y1i7f1?p=9

 

二、前期准备

下载 Maven:https://maven.apache.org/download.cgi

安装配置 Maven: https://blog.csdn.net/m0_67402564/article/details/123891208

配置阿里云 Maven 镜像加速:https://developer.aliyun.com/mvn/guide

安装 eclipse 和 Java JDK

————————————————————————————————————————————

准备一个Java SpringBoot 被测项目:https://gitee.com/dzitcast/springbootdemo

安装启动:在项目 pom.xml  目录下,cmd 命令 mvn clean, 然后mvn install,重命名生成的 jar 包 springbootdemo.jar

启动项目:java -jar springbootdemo-0.0.1-SNAPSHOT.jar

测试项目 postman 访问:http://127.0.0.1:18082/emp/selectAIIEmpByPage

————————————————————————————————————————————

下载Jacoco:https://www.jacoco.org/jacoco/index.html

解压取出:jacocoagent.jar

————————————————————————————————————————————

gitee项目:Jacoco 二开项目 https://gitee.com/Dray/jacoco

二次开发编译好的 cli.jar 包 https://gitee.com/Dray/jacoco/releases (注意!:选 org.jacoco.cli-0.8.7-SNAPSHOT-nodeps.jar , 重命名为 jacococli2.jar)

————————————————————————————————————————————

gitee项目:code-diff https://gitee.com/Dray/code-diff

修改application.yml  配置文件中 Git 的账号 密码 和本地项目仓库目录地址

code-diff\application 目录下,maven clean , maven install,生成 一个 application-1.0.0-SNAPSHOT.jar 包

java -jar application-1.0.0-SNAPSHOT.jar 启动

本地访问:http://127.0.0.1:8085/doc.html

配置 git 项目 token :Authorization(apiKey)

在调试里面:填上 项目git 地址 和 上下版本号 ,点击发送即可

 

三、使用教程

以下文件移动到被测项目根目录:

  被测项目 jar 包 :springbootdemo.jar

  jacocoagent.jar

  org.jacoco.cli-0.8.7-SNAPSHOT-nodeps.jar 重命名为 jacococli2.jar

 

使用步骤:

  1、用 Jacocoagent 启动项目收集覆盖率信息

java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar springbootdemo.jar

       2、用二次开发的 cli 包生成 exec 文件

java -jar jacococli2.jar dump --address 127.0.0.1 --port 6300 --destfile springbootdemo.exec

  3、通过 code-diff 服务获取两次提交的代码差异:详细看视频=》 jacoco增量应用,拿到变更的 json 数据

[{\"classFile\":\"me/xz/controller/UserController\",\"lines\":[{\"endLineNum\":70,\"startLineNum\":69,\"type\":\"REPLACE\"}],\"methodInfos\":[{\"methodName\":\"login\",\"parameters\":\"User\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"},{\"classFile\":\"me/xz/bean/User\",\"lines\":[{\"endLineNum\":28,\"startLineNum\":20,\"type\":\"INSERT\"}],\"methodInfos\":[{\"methodName\":\"getPassword\",\"parameters\":\"\"},{\"methodName\":\"getUsername\",\"parameters\":\"\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"}]

  4、用二次开发的 cli 包生成 report 增量覆盖率报告

java -jar jacococli2.jar report springbootdemo.exec --classfiles target\classes --sourcefiles src\main\java --html html-report-diff --xml report-diff.xml --diffCode "[{\"classFile\":\"me/xz/controller/UserController\",\"lines\":[{\"endLineNum\":70,\"startLineNum\":69,\"type\":\"REPLACE\"}],\"methodInfos\":[{\"methodName\":\"login\",\"parameters\":\"User\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"},{\"classFile\":\"me/xz/bean/User\",\"lines\":[{\"endLineNum\":28,\"startLineNum\":20,\"type\":\"INSERT\"}],\"methodInfos\":[{\"methodName\":\"getPassword\",\"parameters\":\"\"},{\"methodName\":\"getUsername\",\"parameters\":\"\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"}]" --encoding=utf-8

  5、获取全量覆盖率报告

java -jar jacococli2.jar report springbootdemo.exec --classfiles target\classes --sourcefiles src\main\java --html html-report --xml report.xml  --encoding=utf-8

 

总结:

用 Jacoco agent 启动 Java SpringBoot被测项目 = 》 测试完后 用 Jacocoagent 启动项目收集覆盖率信息 =》用二次开发的 cli 包生成 exec 文件 

=》通过 code-diff 服务获取两次提交的代码差异:详细看视频=》 jacoco增量应用,拿到变更的 json 数据

=》用二次开发的 cli 包生成 report 增量覆盖率报告

 

标签:springbootdemo,codediff,二开,--,jar,jacoco,https,report,Jacoco
来源: https://www.cnblogs.com/Ootori/p/16215986.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有