实现增量代码覆盖率统计,方案分两步:
- 获取增量代码
- 在生成report阶段去判断代码是否是增量,再去生成reprot
根据方案,具体实现分三步:
- 获取两个版本的差异代码
- 将差异代码在生成report阶段传给jacoco
- 修改jacoco源码,生成报告时判断代码是否是增量代码,只有增量代码才去生成报告
获取差异代码,用到了两个工具类:
- org.eclipse.jgit主要用于从git获取代码,并获取到存在变更的文件
- javaparser-core是一个java解析类,能将class类文件解析成树状,方便我们去获取差异类
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.javaparser/javaparser-core -->
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-core</artifactId>
</dependency>
将差异代码,通过 --diffCode参数形式在生成report阶段传给jacoco,report里统计的只有增量代码覆盖率