有没有办法从SonarQube中排除包(由gradle + sonar-runner配备)覆盖率报告(由jacoco生成),而不是将它们完全排除在项目之外?
以下是我到目前为止尝试的内容:
// JaCoCo test coverage configuration
tasks.withType(Test) { task ->
jacoco {
append = false
// excluded classes from coverage defined in above configuration
excludes = excludedClasses()
}
jacocoTestReport {
doFirst {
classDirectories = fileTree(dir: "${buildDir}/classes/main/").exclude(excludedClasses())
}
}
}
用于从声纳分析中排除包的属性设置。将此添加到我的配置会导致包在Sonar中根本不显示的情况。
property 'sonar.exclusions', excludedClasses().join(',')
用于从jacoco中排除包的属性设置。设置此选项会导致包裹被排除在覆盖率分析之外,但会显示0%会累积到不良总分。
property 'sonar.jacoco.exclusions', excludedClasses().join(',')
我已经设法通过在sonar-project.properties中使用sonar.coverage.exclusions属性从coverage报告中排除特定包。财产在官方documentation中描述
将@ Mikalai的答案和@ pavel的评论结合起来,可以更容易地复制和粘贴:
要从所有Sonar检查中排除包或类(覆盖,代码异味,错误等),请将以下内容添加到build.gradle
:
sonarqube {
properties {
property 'sonar.exclusions', "**/com/some/package/**"
}
}
要仅从Sonar代码覆盖率检查中排除包或类,请将以下内容添加到build.gradle
:
sonarqube {
properties {
property 'sonar.coverage.exclusions', "**/com/some/package/**"
}
}