jacoco二开实践-增加方法屏蔽功能

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字段描述符判断参数即可

Jacoco是一个用于代码覆盖率测试和报告生成的插件。下面是使用Jacoco插件的一般步骤: 1. 在你的项目中的build.gradle文件中添加Jacoco插件的依赖。具体可以在`plugins`块或者`dependencies`块中添加以下代码: ```groovy plugins { id 'jacoco' } ``` 或者 ```groovy dependencies { implementation 'org.jacoco:org.jacoco.core:<version>' } ``` 2. 配置Jacoco插件。在build.gradle文件中添加以下代码来设置Jacoco插件的配置: ```groovy jacoco { toolVersion = "<version>" reportsDir = file("$buildDir/reports/jacoco") } test { jacoco { append = true destinationFile = file("$buildDir/jacoco/test.exec") classDumpFile = file("$buildDir/jacoco/classpathdumps/classes.dump") includeNoLocationClasses = true } } ``` 你可以根据需要修改这些配置。例如,`reportsDir`指定了Jacoco报告的输出目录,`destinationFile`指定了测试结果的输出文件。 3. 运行测试并生成Jacoco报告。你可以使用Gradle的`test`任务来执行测试,并使用`jacocoTestReport`任务来生成Jacoco报告。例如,可以通过命令行运行以下命令: ```shell ./gradlew test jacocoTestReport ``` 4. 查看Jacoco报告。在上一步中生成的Jacoco报告目录中,你可以找到HTML格式的代码覆盖率报告。你可以在浏览器中打开该报告并查看覆盖率数据。 这是Jacoco插件的基本使用方法。你可以根据具体的项目需求和配置来进一步定制Jacoco插件的功能。详细的使用方法和配置选项可以参考Jacoco插件的文档。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值