Jacoco 参数化违反规则值
Jacoco parameterize violation rule value
我的 build.gradle 文件中有以下内容。如果覆盖率低于某个值,我试图使构建失败。
project.task(type: JacocoCoverageVerification, "jacocoTestCoverageVerification", overwrite: true) {
executionData(junitPlatformTestTask)
sourceSets(sourceSets.main)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
onlyIf = {
true
}
violationRules {
rule {
limit {
counter = 'INSTRUCTION'
value = 'COVEREDRATIO'
minimum = 0.001
}
}
}
}
如何在此处参数化"minimum"的值,以便在构建项目时通过 Jenkins 或 Team city 传递它。任何帮助将不胜感激。
在Jenkins中使用参数化构建,添加参数"minimumValue"。然后你可以在 build.gradle:
中使用它
task jacocoJupTestReport(type: JacocoReport) {
executionData(test)
sourceSets(sourceSets.main)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
reports {
xml.enabled true
xml.destination file("${buildDir}/reports/jacoco/report.xml")
html.enabled false
csv.enabled false
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'INSTRUCTION'
value = 'COVEREDRATIO'
minimum = project.properties["minimumValue"]
}
}
}
}
}
可以使用System环境从Jenkins传参
System.getEnv("<JENKINS_PARAM_NAME>") as String ?: "<default value>"
将类型设置为 String
以安全地假设 Jenkins 中可接受的参数类型。然后在 gradle:
中转换回特定类型
例如:
def coverageRatio = System.getEnv("COVERAGE_RATIO") as String ?: "1.0" //"default value is 100% coverage"
def fileFilter = ['**/path/to/your/classes/you/like/to/exclude','**/some/class']
violationRules {
...
rule {
element = 'BUNDLE'
limit {
counter = 'INSTRUCTION'
value = 'COVEREDRATIO'
minimum = coverageRatio.toBigDecimal()
}
excludes = fileFilter
}
}
我的 build.gradle 文件中有以下内容。如果覆盖率低于某个值,我试图使构建失败。
project.task(type: JacocoCoverageVerification, "jacocoTestCoverageVerification", overwrite: true) {
executionData(junitPlatformTestTask)
sourceSets(sourceSets.main)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
onlyIf = {
true
}
violationRules {
rule {
limit {
counter = 'INSTRUCTION'
value = 'COVEREDRATIO'
minimum = 0.001
}
}
}
}
如何在此处参数化"minimum"的值,以便在构建项目时通过 Jenkins 或 Team city 传递它。任何帮助将不胜感激。
在Jenkins中使用参数化构建,添加参数"minimumValue"。然后你可以在 build.gradle:
中使用它task jacocoJupTestReport(type: JacocoReport) {
executionData(test)
sourceSets(sourceSets.main)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
reports {
xml.enabled true
xml.destination file("${buildDir}/reports/jacoco/report.xml")
html.enabled false
csv.enabled false
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'INSTRUCTION'
value = 'COVEREDRATIO'
minimum = project.properties["minimumValue"]
}
}
}
}
}
可以使用System环境从Jenkins传参
System.getEnv("<JENKINS_PARAM_NAME>") as String ?: "<default value>"
将类型设置为 String
以安全地假设 Jenkins 中可接受的参数类型。然后在 gradle:
例如:
def coverageRatio = System.getEnv("COVERAGE_RATIO") as String ?: "1.0" //"default value is 100% coverage"
def fileFilter = ['**/path/to/your/classes/you/like/to/exclude','**/some/class']
violationRules {
...
rule {
element = 'BUNDLE'
limit {
counter = 'INSTRUCTION'
value = 'COVEREDRATIO'
minimum = coverageRatio.toBigDecimal()
}
excludes = fileFilter
}
}