无法从 kotlin jacoco 测试覆盖率中排除生成的类

abi*_*ter 4 kotlin build.gradle

我试图从 jacoco 覆盖率报告中排除一些生成的类。使用 groovy 运行良好,但在转换为 Kotlin 后它不起作用

tasks.withType<JacocoCoverageVerification> {
afterEvaluate {
     files(classDirectories.files.forEach() {
        fileTree(it).apply {
            exclude("com/generate/**")
        }
    })
}
violationRules {
    rule {
        limit {
            minimum = BigDecimal(0.30)
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

}

tasks.getByName("check")
.dependsOn(tasks.getByName("jacocoTestCoverageVerification"))
Run Code Online (Sandbox Code Playgroud)

但违规规则运作良好。

Sur*_*ran 9

这是jacoco plugin对 on 的限制kotlin。由于这classDirectories不是最终的,我们不能走老路。我们需要使用方法classDirectories.setFrom来设置值。

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/**")
            }
        }))
    }
}
Run Code Online (Sandbox Code Playgroud)