简介
jacoco二开,主要加入了增量代码匹配的功能 具体设计方案参考 jacoco增量代码实践
问题记录
Some classes do not match with execution data.
因为git版本导致个别代码行,内容没有改变,但是解析值判定,会导致jacoco对应的class判定不一致,但是实际代码内容一致。
改造内容:
新增类:所有新增类处于org.jacoco.core.internal.diff包下面;
修改类:主要修改了核心类org.jacoco.core.analysis.Analyzer,org.jacoco.core.analysis.CoverageBuilder;org.jacoco.core.internal.flowClassProbesAdapter
所有修改内容在commit记录可查,为了方便查看,我尽量减少了commit的次数
使用方法
1、 下载源码,先运行mvn spotless:apply 主要是jacoco进行了文件头文件校验,如果新加入了类或者修改了类,需要重新校验,所以要先运行此命令
2、 然后运行
maven: mvn clean package -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
3、 其中org.jacoco.cli-0.8.7-SNAPSHOT-nodeps.jar
为构建出的我们需要的包(我已经构建好,懒得编译从这里下载下载地址)
4、 其他包都可以使用jacoco官方包,但是版本最好保持一致,也可以用我们自己构建出的包,report时使用我们构建的包,如果是增量覆盖率加入参数
--diffCode=
"[{\"classFile\":\"com/dr/code/diff/config/GitConfig\",\"methodInfos\":[{\"methodName\":\"cloneRepository\",\"parameters\":\"String gitUrl,String codePath,String commitId\"},{\"methodName\":\"diffMethods\",\"parameters\":\"DiffMethodParams diffMethodParams\"},{\"methodName\":\"getClassMethods\",\"parameters\":\"String oldClassFile,String mewClassFile,DiffEntry diffEntry\"}],\&#