forked from detekt/detekt
/
build.gradle.kts
69 lines (62 loc) · 2.6 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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.detektReportMd)
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"))
}