问题
I am trying to exclude some generated classes from jacoco coverage report. Which is working fine with groovy but after converting to Kotlin it's not working
tasks.withType<JacocoCoverageVerification> {
afterEvaluate {
files(classDirectories.files.forEach() {
fileTree(it).apply {
exclude("com/generate/**")
}
})
}
violationRules {
rule {
limit {
minimum = BigDecimal(0.30)
}
}
}
}
tasks.getByName("check")
.dependsOn(tasks.getByName("jacocoTestCoverageVerification"))
But violation rule working perfectly.
回答1:
It is a limitaion with jacoco plugin
on kotlin
. Since the classDirectories
is not final, we cant go with the old way. We need to use the method classDirectories.setFrom
to set the value.
tasks.withType<JacocoCoverageVerification> {
violationRules {
rule {
limit {
minimum = BigDecimal(0.62)
}
}
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.map {
fileTree(it).apply {
exclude("com/generate/**")
}
}))
}
}
tasks.withType<JacocoReport> {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.map {
fileTree(it).apply {
exclude("com/generate/**")
}
}))
}
}
来源:https://stackoverflow.com/questions/55921605/unable-to-exclude-generated-classes-from-kotlin-jacoco-test-coverage