super-jacoco实践与思考

3,319 阅读2分钟

这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战

前言

super-jacoco是滴滴基于jacoco二次开发的工程,可实现工程化的代码覆盖率统计,支持全量代码和增量代码的覆盖率统计,可以自动执行jacoco的dump、report等命令,部署方便,能生成可视化的报告。

super-jacoco工程地址:github.com/tigerge000/…

实践步骤
1、将代码down下来,更改application.properties文件中的数据库连接信息和gitlab配置。
当然在这步之前必须准备的有 【mysql、jdk1.8、maven3】三件套。

1.png

2、run一下sql目录中的mysql命令,创建库和表。
执行mvn package -Dmaven.test.skip=true生成super-jacoco.jar,位置在super-jacoco-master的target目录下。
3、将super-jacoco-master里面jacoco目录下的两个jar包放到用户主目录下面,一般就是/User/admin。

2.png

4、进入super-jacoco-master的target目录,执行“nohup java -jar super-jacoco.jar &”启动代码覆盖率服务,默认端口为8899,最好不要修改,因为涉及到logs和report的访问路径默认设置的都是8899.
5、启动需要测试的项目工程,在启动项加上如下命令:
-javaagent:/Users/admin/org.jacoco.agent-0.8.5-runtime.jar=includes=*,output=tcpserver,address=127.0.0.1,port=6300,append=true
启动服务后,就可以进行功能测试了,测试完毕,执行jacoco收集覆盖率的接口。
6、收集覆盖率文件
 URL:/cov/triggerEnvCov
 调用方法:POST
 参数(body方式传入):{"uuid":"uuid","type":1,"gitUrl":"","subModule":"","baseVersion":"master","nowVersion":"daily""address":"127.0.0.1","port":"6300"}
 返回:{"code":200,"data":null,"msg":"success"}
 备注:
 -javaagent:/Users/admin/org.jacoco.agent-0.8.5-runtime.jar=includes=*,output=tcpserver,address=127.0.0.1,port=6300,append=true中的 address=127.0.0.1,port=6300"address":"127.0.0.1","port":"6300" 保持一致。
 type 1是全量,2是增量。
 baseVersion 原分支
 nowVersion 现分支

3.png

7、获取覆盖率结果
 URL:/cov/getEnvCoverResult
 调用方法:GET
 参数:uuid(String)
 返回:{"code":200,"data":{"coverStatus":1,"errMsg":"msg","lineCoverage":100.0,"branchCoverage":100.0,"logFile":"file content","reportUrl":"http://"},"msg":"msg"}

注意事项

1、启动覆盖率收集后,拉到新代码后,编译工程需要一点时间,耐心等待1-2分钟,如果还是没有编译成功,换个uuid重新调接口试一下。

2、目前这个代码也有点小瑕疵,不适用于所有类型的工程,比如有多个com,但是只有一个有pom文件的工程,会循环获取module的时候出错。

3、uuid是唯一键,不能重复。