From 557c7d3180ca9f2b22a915966d28682a80a6a59b Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Sat, 5 Feb 2022 10:10:35 +0000 Subject: [PATCH] Fix for missing /kotlin folder when running on Android projects (#4554) --- .../detekt/internal/DetektAndroid.kt | 4 ++-- .../arturbosch/detekt/DetektAndroidSpec.kt | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt index 9958dee49..be44a7a28 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt @@ -112,7 +112,7 @@ internal fun Project.registerAndroidDetektTask( extraInputSource: FileCollection? = null ): TaskProvider = registerDetektTask(taskName, extension) { - setSource(variant.sourceSets.map { it.javaDirectories }) + setSource(variant.sourceSets.map { it.javaDirectories + it.kotlinDirectories }) extraInputSource?.let { source(it) } classpath.setFrom(variant.getCompileClasspath(null).filter { it.exists() } + bootClasspath) // If a baseline file is configured as input file, it must exist to be configured, otherwise the task fails. @@ -132,7 +132,7 @@ internal fun Project.registerAndroidCreateBaselineTask( extraInputSource: FileCollection? = null ): TaskProvider = registerCreateBaselineTask(taskName, extension) { - setSource(variant.sourceSets.map { it.javaDirectories }) + setSource(variant.sourceSets.map { it.javaDirectories + it.kotlinDirectories }) extraInputSource?.let { source(it) } classpath.setFrom(variant.getCompileClasspath(null).filter { it.exists() } + bootClasspath) val variantBaselineFile = extension.baseline?.addVariantName(variant.name) diff --git a/detekt-gradle-plugin/src/test/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt b/detekt-gradle-plugin/src/test/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt index 3979528f0..e6fa4c8ac 100644 --- a/detekt-gradle-plugin/src/test/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt +++ b/detekt-gradle-plugin/src/test/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt @@ -25,7 +25,16 @@ object DetektAndroidSpec : Spek({ $ANDROID_BLOCK $DETEKT_REPORTS_BLOCK """.trimIndent(), - srcDirs = listOf("src/main/java", "src/debug/java", "src/test/java", "src/androidTest/java"), + srcDirs = listOf( + "src/main/java", + "src/debug/java", + "src/test/java", + "src/androidTest/java", + "src/main/kotlin", + "src/debug/kotlin", + "src/test/kotlin", + "src/androidTest/kotlin", + ), baselineFiles = listOf( "detekt-baseline.xml", "detekt-baseline-release.xml", @@ -43,6 +52,10 @@ object DetektAndroidSpec : Spek({ gradleRunner.runTasksAndCheckResult(":app:detektMain") { buildResult -> assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-release.xml """) assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debug.xml """) + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]main[/\\]java""") + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]debug[/\\]java""") + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]main[/\\]kotlin""") + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]debug[/\\]kotlin""") assertThat(buildResult.output).contains("--report xml:") assertThat(buildResult.output).contains("--report sarif:") assertThat(buildResult.output).doesNotContain("--report txt:") @@ -60,6 +73,10 @@ object DetektAndroidSpec : Spek({ assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-releaseUnitTest.xml """) assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debugUnitTest.xml """) assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debugAndroidTest.xml """) + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]test[/\\]java""") + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]androidTest[/\\]java""") + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]test[/\\]kotlin""") + assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]androidTest[/\\]kotlin""") assertThat(buildResult.output).contains("--report xml:") assertThat(buildResult.output).contains("--report sarif:") assertThat(buildResult.output).doesNotContain("--report txt:")