JaCoCo增量代码覆盖率搭建手册

JaCoCO环境部署 + SpringBoot项目源代码 + 全量代码覆盖率搭建:https://www.jianshu.com/p/9f60ee7192fd
方案原理:
  1. 收集两个版本的差异代码
  2. 生成report阶段判断代码是否是增量代码,报告里只统计增量代码
使用开源工具:

基于git和svn的差异代码获取
code-diff: git clone https://gitee.com/Dray/code-diff.git

对jacococli.jar包进行二次开发
jacoco: git clone https://gitee.com/Dray/jacoco.git

实战步骤:
  1. 修改项目代码(新增或修改类、方法),然后提交代码到git平台
  2. 将新改动的项目代码打包生成jar包。项目根目录下,命令执行
    mvn clean package
  3. 项目启动命令中加入jacocoagent,启动项目
    java -javaagent:/Users/zhangjiangying/Downloads/jacoco-addtional/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar /Users/zhangjiangying/Downloads/jacoco-addtional/demo-0.0.1-SNAPSHOT.jar
  4. 服务启动后,在浏览器上调用几个接口触发代码覆盖
    用二次开发的jacococli.jar包生成exec文件
    java -jar /Users/zhangjiangying/Downloads/jacoco-addtional/org.jacoco.cli.jar dump --address localhost --port 6300 --destfile ./jacoco_tcp_1.exec
  5. 通过code-diff获取差异代码
    部署工具代码(code-diff: git clone https://gitee.com/Dray/code-diff.git)到本地
    修改修改application.yml配置文件中Git的账号、密码,并确保git上的项目访问权限是public
  6. 启动项目,然后访问http://127.0.0.1:8085/doc.html,在差异代码模块下,调用【git获取差异代码】接口,入参写入要比对的两个版本的commitID号,再加上项目的git地址,调用此接口,可获取差异代码【"uniqueData"】字段
    image.png

    image.png
  7. 生成差异代码覆盖统计的report,在【"--diffCode"】后加入【"uniqueData"】信息
    java -jar /Users/zhangjiangying/Downloads/jacoco-addtional/org.jacoco.cli.jar report /Users/zhangjiangying/Downloads/jacoco-addtional/jacoco_tcp_1.exec --classfiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/target/classes --sourcefiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/src/main/java --html diff-report001 --diffCode "[{\"classFile\":\"com/example/demo/GameController\",\"lines\":[{\"endLineNum\":17,\"startLineNum\":0,\"type\":\"INSERT\"}],\"methodInfos\":[{\"endLine\":10,\"methodName\":\"run\",\"parameters\":[],\"startLine\":7},{\"endLine\":13,\"methodName\":\"swim\",\"parameters\":[],\"startLine\":12},{\"endLine\":16,\"methodName\":\"jump\",\"parameters\":[],\"startLine\":15}],\"moduleName\":\"\",\"type\":\"ADD\"},{\"classFile\":\"com/example/demo/HelloController\",\"lines\":[{\"endLineNum\":25,\"startLineNum\":23,\"type\":\"REPLACE\"},{\"endLineNum\":30,\"startLineNum\":28,\"type\":\"REPLACE\"}],\"methodInfos\":[{\"endLine\":26,\"methodName\":\"footballPlayer\",\"parameters\":[],\"startLine\":23},{\"endLine\":31,\"methodName\":\"pingpangstar\",\"parameters\":[],\"startLine\":28}],\"moduleName\":\"\",\"type\":\"MODIFY\"}]" --encoding=utf-8
    image.png

    image.png

    image.png

    image.png
  1. 生成全量代码统计的reprot,可进行对比
    java -jar /Users/zhangjiangying/Downloads/jacoco-addtional/org.jacoco.cli.jar report /Users/zhangjiangying/Downloads/jacoco-addtional/jacoco_tcp_1.exec --classfiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/target/classes --sourcefiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/src/main/java --html report002 --encoding=utf-8
    image.png

    image.png

    image.png

参考code-diff工具原版:https://blog.csdn.net/tushuping/article/details/112613528
参考视频:https://www.bilibili.com/video/BV1tr4y1i7f1?p=9&vd_source=35fc7fde72f5261003f3893e6be02e18

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容