1.背景
项目中没有使用jacoco插件而是使用了jacoco插件依赖的两个jar包,并且规定给jacoco使用。所以不能直接使用jacocoTestCoverageVerification来直接配置规则。
2.探索
观察codeCoverageReport任务中的配置,猜测应该是按照字段属性的名称来配置。反编译jar包中对应的task的class文件发现与规则相关的字段属性叫check,但是直接配置check会配置成gradle的check任务,即检查代码编写质量。再对html进行大小写实验后发现改配置项忽略大小写,于是可以配置成CHECK。接着就是check中的配置。首先是rule,rule里面是limit,如下:
rule{
limit{
minimum =
0.9
}
}
但是一直没有用,不管minimum值为多少,任务都一直能执行成功。发现html是这样配置的:
html(destdir: buildDir.path + '/reports/jacoco')
3.实现
所以尝试把limit也按照这样配置,最后的配置如下:
CHECK { failOnViolation = true rule { limit(counter: 'LINE', minimum: 0.9) limit(counter: 'BRANCH', minimum: 0.8) } }
终于成功。期间还尝试使用自定义task类的方式,但是依赖配置的是jacoco什么的,运行任务会报AntClassLoader加载不到自定义类,感觉这个坑也挺大的就没有继续往下尝试。