Files
detekt/code-coverage-report/build.gradle.kts
Chao Zhang d06b109568 Gradle Enterprise Trial (#4763)
* Refactor `JvmSpec` to avoid using test resources

* Build a utility to copy resource files into temporary files

* Fix deprecation warning on jacocoMergedReport

* Add back `jvm` test fixtures

* Enabled Remote Build cache

* Change androidSdkInstalled to a boolean flag

* Use consistent warningsAsErrors

* Enable local build cache

* Fix MaxLineLength violation

* Update build-logic/src/main/kotlin/module.gradle.kts

Co-authored-by: Brais Gabín <braisgabin@gmail.com>

* Add a separate job to enable `warningsAsErrors`

Co-authored-by: Nicola Corti <corti.nico@gmail.com>
Co-authored-by: Brais Gabín <braisgabin@gmail.com>
2022-06-12 14:21:22 -07:00

68 lines
2.5 KiB
Kotlin

plugins {
id("base")
id("jacoco-report-aggregation")
}
reporting {
reports {
create("jacocoMergedReport", JacocoCoverageReport::class) {
testType.set(TestSuiteType.UNIT_TEST)
}
}
}
jacoco.toolVersion = libs.versions.jacoco.get()
dependencies {
jacocoAggregation(projects.detektApi)
jacocoAggregation(projects.detektCli)
jacocoAggregation(projects.detektCore)
jacocoAggregation(projects.detektFormatting)
jacocoAggregation(projects.detektGenerator)
jacocoAggregation(projects.detektMetrics)
jacocoAggregation(projects.detektParser)
jacocoAggregation(projects.detektPsiUtils)
jacocoAggregation(projects.detektReportHtml)
jacocoAggregation(projects.detektReportSarif)
jacocoAggregation(projects.detektReportTxt)
jacocoAggregation(projects.detektReportXml)
jacocoAggregation(projects.detektRules)
jacocoAggregation(projects.detektRulesComplexity)
jacocoAggregation(projects.detektRulesCoroutines)
jacocoAggregation(projects.detektRulesDocumentation)
jacocoAggregation(projects.detektRulesEmpty)
jacocoAggregation(projects.detektRulesErrorprone)
jacocoAggregation(projects.detektRulesExceptions)
jacocoAggregation(projects.detektRulesNaming)
jacocoAggregation(projects.detektRulesPerformance)
jacocoAggregation(projects.detektRulesStyle)
jacocoAggregation(projects.detektTooling)
}
tasks.check {
dependsOn(tasks.named("jacocoMergedReport"))
}
// The `allCodeCoverageReportClassDirectories` configuration provided by the jacoco-report-aggregation plugin actually
// resolves JARs and not class directories as the name suggests. Because the detekt-formatting JAR bundles ktlint and
// other dependencies in its JAR, they are incorrectly displayed on the coverage report even though they're external
// dependencies.
configurations.allCodeCoverageReportClassDirectories.get().attributes {
attributes.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class, Category.LIBRARY))
attributes.attribute(
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements::class, LibraryElements.CLASSES)
)
}
val customClassDirectories = configurations.allCodeCoverageReportClassDirectories.get().incoming.artifactView {
componentFilter {
it is ProjectComponentIdentifier
}
lenient(true)
}
tasks.named("jacocoMergedReport", JacocoReport::class).configure {
this.classDirectories.setFrom(customClassDirectories.files)
mustRunAfter(rootProject.project("detekt-generator").tasks.named("generateDocumentation"))
}