gradle - Jacoco Gradle 在整个项目级别(不是在模块级别)的最小代码覆盖率阈值
问题描述
我们的项目使用的是 Gradle 3.5,jacoco 0.8.1
它有3个模块——模块-A、模块-B和模块-C,其代码覆盖率分别为50%、6%和42%,整个项目的代码覆盖率为38%。
现在我们想以整个项目当前的代码覆盖率作为阈值,也就是说如果整个项目的代码覆盖率低于 38%,构建就会失败。
我 在 Jacoco Gradle 中尝试了最小代码覆盖率阈值中的解决方案
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.38
}
}
}
但是失败了,提示module-B违规,指令覆盖率是0.06,而expect是0.38,看来只适合模块级别,不适合整个项目级别。
我也尝试使用 element = 'GROUP',但似乎没有效果。(https://www.eclemma.org/jacoco/trunk/doc/api/org/jacoco/core/analysis/ICoverageNode.ElementType.html)
任何人都知道如何为整个项目而不是模块级别设置最小代码覆盖率阈值?
谢谢,
解决方案
我建议在你的多模块构建中有一个单独的项目(模块)来报告整个项目。你可能也需要这个JacocoMerge
任务。假设 a、b 和 c 是 java 项目。例如
例如:
def javaProjects = [':a', ':b', ':c']
javaProjects.each {
project(it) {
apply plugin: 'java'
apply plugin: 'jacoco'
}
}
project(':report') {
FileCollection execData = files(javaProjects.collect { project(it).tasks.withType(Test).jacoco.destinationFile })
FileCollection sourceDirs = files(javaProjects.collect { project(it).sourceSets.main.java.srcDirs })
FileCollection classDirs = files(javaProjects.collect { project(it).sourceSets.main.java.output.classesDirs })
def testTasks = javaProjects.collect { project(it).tasks.withType(Test)}
task jacocoMerge(type: JacocoMerge) {
dependsOn testTasks
executionData execData
jacocoClasspath = classDirs
}
task coverageVerification(type: JacocoCoverageVerification) {
dependsOn jacocoMerge
executionData jacocoMerge.destinationFile
sourceDirectories srcDirs
classDirectories classDirs
violationRules.rule.limit.minimum = 0.38
}
task jacocoReport(type: JacocoReport) {
dependsOn jacocoMerge
executionData jacocoMerge.destinationFile
sourceDirectories srcDirs
classDirectories classDirs
}
}
推荐阅读
- google-apps-script - 如何在网站管理员中验证 Google Apps 脚本的所有权
- google-sheets - 如何在 SUMIFS 中使用基于一组数字的标准?
- javascript - 使用动态键访问 Javascript 对象值
- vue.js - 在vue js中以反应方式从父组件重置子组件数据属性值
- html - HTML+CSS-顶部导航栏和2张图片之间的文字
- laravel - 类 Illuminate\Support\Facades\RateLimiter 未找到
- macports - 使 MacPorts 打印校验和的命令是什么
- javascript - React-Leaflet:添加 L.TileLayer 打破地图
- css - Font Awesome 5 适用于 Chrome 但不适用于 Safari
- php - php 如果雄蕊导致页面显示为空白