From 362a06ecf0601083eda5da815b5bb325daf9e0f0 Mon Sep 17 00:00:00 2001 From: Marie Katrine Ekeberg Date: Sat, 7 May 2022 11:33:01 +0200 Subject: [PATCH 1/2] Handle all kdoc sections in UnusedImports, not just the first one --- .../detekt/rules/style/UnusedImports.kt | 15 ++++++----- .../detekt/rules/style/UnusedImportsSpec.kt | 25 +++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt index e793942b1f2..f6f64f5e424 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt @@ -113,15 +113,18 @@ class UnusedImports(config: Config) : Rule(config) { } override fun visitDeclaration(dcl: KtDeclaration) { - val kdoc = dcl.docComment?.getDefaultSection() + val kdoc = dcl.docComment?.getAllSections() - kdoc?.getChildrenOfType() - ?.map { it.text } - ?.forEach { handleKDoc(it) } + kdoc?.forEach { + it.getChildrenOfType() + .map { it.text } + .forEach { handleKDoc(it) } - kdoc?.getContent()?.let { - handleKDoc(it) + it.getContent().let { + handleKDoc(it) + } } + super.visitDeclaration(dcl) } diff --git a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImportsSpec.kt b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImportsSpec.kt index 81197fb3ecd..d9425c640d5 100644 --- a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImportsSpec.kt +++ b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImportsSpec.kt @@ -609,4 +609,29 @@ class UnusedImportsSpec(val env: KotlinCoreEnvironment) { """ assertThat(subject.lintWithContext(env, mainFile, additionalFile)).isEmpty() } + + @Test + fun `does not report unused import for import used in kdoc - #4815`() { + val mainFile = """ + import x.y.z.SomeClass + + class MyView + + /** + * Style for [MyView] + * Blablabla + * + * @property someVal Someval for [SomeClass] + */ + data class StyleClass(val someVal: String) + """ + + val additionalFile = """ + package x.y.z + + class SomeClass + """ + + assertThat(subject.lintWithContext(env, mainFile, additionalFile)).isEmpty() + } } From 5fc74c4e87578d2d1aba06896b534a699c4ed430 Mon Sep 17 00:00:00 2001 From: Marie Katrine Ekeberg Date: Sat, 7 May 2022 11:50:01 +0200 Subject: [PATCH 2/2] Fix NoNameShadowing and UnnecessaryLet violations --- .../gitlab/arturbosch/detekt/rules/style/UnusedImports.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt index f6f64f5e424..e5b1853974e 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/UnusedImports.kt @@ -115,14 +115,12 @@ class UnusedImports(config: Config) : Rule(config) { override fun visitDeclaration(dcl: KtDeclaration) { val kdoc = dcl.docComment?.getAllSections() - kdoc?.forEach { - it.getChildrenOfType() + kdoc?.forEach { kdocSection -> + kdocSection.getChildrenOfType() .map { it.text } .forEach { handleKDoc(it) } - it.getContent().let { - handleKDoc(it) - } + handleKDoc(kdocSection.getContent()) } super.visitDeclaration(dcl)