diff --git a/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNaming.kt b/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNaming.kt index 63f1bfabca0..fe2322353e6 100644 --- a/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNaming.kt +++ b/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNaming.kt @@ -10,6 +10,7 @@ import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.rules.identifierName import io.gitlab.arturbosch.detekt.rules.isConstant import org.jetbrains.kotlin.psi.KtProperty +import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration import org.jetbrains.kotlin.psi.psiUtil.isPrivate /** @@ -32,7 +33,8 @@ class TopLevelPropertyNaming(config: Config) : Rule( override fun visitProperty(property: KtProperty) { super.visitProperty(property) - if (!property.isTopLevel) return + if (!property.isTopLevel || property.psiOrParent.isExtensionDeclaration()) return + if (property.isConstant()) { handleConstant(property) } else { diff --git a/detekt-rules-naming/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNamingSpec.kt b/detekt-rules-naming/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNamingSpec.kt index 79933b043ba..9cc14158920 100644 --- a/detekt-rules-naming/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNamingSpec.kt +++ b/detekt-rules-naming/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/naming/TopLevelPropertyNamingSpec.kt @@ -46,6 +46,15 @@ class TopLevelPropertyNamingSpec { } } + @Test + fun `should not report on top level extension properties`() { + val code = """ + val String._foo = "foo" + """.trimIndent() + + assertThat(subject.lint(code)).isEmpty() + } + @Nested inner class `variables on top level` {