1.确认插入点
jacoco统计覆盖率运行流程:
①使用Javaagent部署服务,监听执行指令
②使用jacococli dump覆盖率信息,存储在exec文件中
③使用jacococli 处理exec文件并生成html覆盖率结果报告
步骤①②是对字节码进行处理,较难介入,我们从步骤③介入,在生成报告时排除需要屏蔽的方法
2.功能实现
①参数引入:
通过增加jar运行参数引入需要屏蔽的方法,这里增加参数“--deletedmethod”
②参数处理:
jacoco在org.jacoco.core包中ClassProbsAdapter.java的visitMethod方法进行方法遍历,在这个方法中增加废弃方法判断逻辑,如果是废弃方法则把methodProbes置为EMPTY_METHOD_PROBES_VISITOR
入参name为方法名称,desc为JNI字段描述符描述方法的参数和返回值,这里我们只需要比对JNI字段描述符判断参数即可