【发布时间】:2019-05-21 20:58:18
【问题描述】:
由于我的 Jenkins 管道失败,试图从覆盖率报告中排除包。我有一个包含所有 POJO:s 的子项目。我不想为所有这些写 uittest。因此,他们将拖累分支/线路覆盖率,以至于覆盖率将低于阈值并导致我的构建失败。
应该可以排除一些包,但我不能让它工作。
我有以下 jacoco.gradle 文件:
apply plugin: 'jacoco'
apply plugin: 'java'
jacoco {
toolVersion = "0.8.2"
}
jacocoTestReport {
reports {
xml.enabled true
csv.enabled false
html.enabled true
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it, exclude: '**xxx/yyy/zzz/**')
})
}
task coverage { dependsOn 'jacocoTestReport' }
check.dependsOn 'jacocoTestReport'
我的 sonar.gradle 文件中的以下内容:
apply plugin: 'org.sonarqube'
sonarqube {
properties {
property "sonar.forceAnalysis", "true"
property "sonar.forceAuthentication", "true"
property "sonar.java.coveragePlugin", "jacoco"
property "sonar.login", ""
property "sonar.password", ""
}
}
subprojects {
sonarqube {
properties {
property "sonar.jacoco.reportPaths",
"$buildDir/reports/jacoco/allTests.exec"
property "sonar.junit.reportsPath", "$buildDir/test-results/test"
}
}
}
task sonar { dependsOn 'sonarqube' }
在我的 build.gradle 中:
apply from: 'gradle/sonar.gradle'
...
apply plugin: 'java'
...
subprojects {
apply from: '../gradle/jacoco.gradle'
...
}
最后来自我的 Jenkins 文件:
step([$class: 'JacocoPublisher', changeBuildStatus: false,
exclusionPattern: '**/*Test*.class', inclusionPattern:
'**/*.class', minimumBranchCoverage: '80', sourcePattern: '**/src'])
try {
dir(BUILD_DIR) {
sh './gradlew sonar'
}
但 xxx.yyy.zzz 仍然是在 Jenkins 的覆盖报告中生成的!
【问题讨论】:
-
为什么要反斜杠你的
*?只需设置**xxx/yyy/zzz/** -
对不起,在我添加代码样式之前需要反斜杠。我的代码中有反斜杠。我现在更新了问题。
-
@Dezso Gabos 我在链接中看到了解决方案,但我认为它与我所拥有的相同。 Jenkins/Jacoco 仍然不会排除这个包。
-
sonar.coverage.exclusion删除特殊课程的覆盖范围?
标签: java jenkins gradle sonarqube jacoco