@@ -3,10 +3,13 @@ package net.thunderbird.gradle.plugin.quality.detekt
33import dev.detekt.gradle.Detekt
44import dev.detekt.gradle.DetektCreateBaselineTask
55import dev.detekt.gradle.extensions.DetektExtension
6+ import java.io.File
7+ import java.nio.file.Path
68import net.thunderbird.gradle.plugin.ProjectConfig
79import net.thunderbird.gradle.plugin.libs
810import org.gradle.api.Plugin
911import org.gradle.api.Project
12+ import org.gradle.api.file.FileTreeElement
1013import org.gradle.kotlin.dsl.assign
1114import org.gradle.kotlin.dsl.dependencies
1215import 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