Skip to content

Commit 44e0ff9

Browse files
committed
fix: exclude generated build sources from detekt
1 parent bcd18fc commit 44e0ff9

1 file changed

Lines changed: 18 additions & 10 deletions

File tree

  • build-plugin/plugin/src/main/kotlin/net/thunderbird/gradle/plugin/quality/detekt

build-plugin/plugin/src/main/kotlin/net/thunderbird/gradle/plugin/quality/detekt/DetektPlugin.kt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ package net.thunderbird.gradle.plugin.quality.detekt
33
import dev.detekt.gradle.Detekt
44
import dev.detekt.gradle.DetektCreateBaselineTask
55
import dev.detekt.gradle.extensions.DetektExtension
6+
import java.io.File
7+
import java.nio.file.Path
68
import net.thunderbird.gradle.plugin.ProjectConfig
79
import net.thunderbird.gradle.plugin.libs
810
import org.gradle.api.Plugin
911
import org.gradle.api.Project
12+
import org.gradle.api.file.FileTreeElement
1013
import org.gradle.kotlin.dsl.assign
1114
import org.gradle.kotlin.dsl.dependencies
1215
import org.gradle.kotlin.dsl.withType
@@ -47,13 +50,15 @@ class DetektPlugin : Plugin<Project> {
4750
private fun Project.configureDetektTasks() {
4851
with(tasks) {
4952
withType<Detekt>().configureEach {
53+
val isInProjectBuildDirectory = buildDirectoryExclusion(layout.buildDirectory.get().asFile)
54+
5055
if (name.contains("androidHostTest", ignoreCase = true)) {
5156
enabled = false
5257
}
5358

5459
jvmTarget = ProjectConfig.Compiler.jvmTarget.target
5560

56-
exclude(defaultExcludes)
61+
exclude(isInProjectBuildDirectory)
5762

5863
reports {
5964
checkstyle.required.set(false)
@@ -66,13 +71,15 @@ class DetektPlugin : Plugin<Project> {
6671
}
6772

6873
withType<DetektCreateBaselineTask>().configureEach {
74+
val isInProjectBuildDirectory = buildDirectoryExclusion(layout.buildDirectory.get().asFile)
75+
6976
if (name.contains("androidHostTest", ignoreCase = true)) {
7077
enabled = false
7178
}
7279

7380
jvmTarget = ProjectConfig.Compiler.jvmTarget.target
7481

75-
exclude(defaultExcludes)
82+
exclude(isInProjectBuildDirectory)
7683
}
7784

7885
register("detektAll") {
@@ -85,11 +92,12 @@ class DetektPlugin : Plugin<Project> {
8592
}
8693
}
8794

88-
private val defaultExcludes = listOf(
89-
"**/.gradle/**",
90-
"**/.idea/**",
91-
"**/build/**",
92-
"**/generated/**",
93-
".github/**",
94-
"gradle/**",
95-
)
95+
private fun buildDirectoryExclusion(buildDirectory: File): (FileTreeElement) -> Boolean {
96+
val buildDirectoryPath = buildDirectory.normalizedPath()
97+
98+
return { fileTreeElement ->
99+
fileTreeElement.file.normalizedPath().startsWith(buildDirectoryPath)
100+
}
101+
}
102+
103+
private fun File.normalizedPath(): Path = absoluteFile.toPath().normalize()

0 commit comments

Comments
 (0)