0. 源码地址
url: git@github.com:jacoco/jacoco.git
tag: v0.8.3
1. 实现原理
java agent (jvm加载jacoco jar包)
asm (字节码操作框架)
执行过程:
jvm在读取class文件后会回调 ClassFileTransformer.transform方法
jacoco的CoverageTransformer实现了ClassFileTransformer接口,完成探针的注入
2. 使用tcp模式启动jacoco进行插桩
在java启动命令中加入 -javaagent 参数
例如 java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true <被测服务的jar包>
3. jacocoagent.jar包中Premain-class配置和入口类
4. 以下是我的jacoco分享ppt和增量改造的代码(README.md有编译打包说明)
ppt 链接: pan.baidu.com/s/1myREhZO4… 密码: 7kdn
源代码(包含增量覆盖率改造)链接: pan.baidu.com/s/1N7_TnXLW… 密码: q3ar