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 f7316344865..d0ab166f7fa 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 @@ -38,6 +38,8 @@ class TopLevelPropertyNaming(config: Config = Config.empty) : Rule(config) { private val privatePropertyPattern: Regex by config("_?[A-Za-z][_A-Za-z0-9]*") { it.toRegex() } override fun visitProperty(property: KtProperty) { + super.visitProperty(property) + if (!property.isTopLevel) 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 3d238104ba6..79e1b4246ca 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 @@ -12,18 +12,12 @@ class TopLevelPropertyNamingSpec { val subject = TopLevelPropertyNaming() @Test - fun `should use custom name top level propeties`() { - assertThat( - TopLevelPropertyNaming(TestConfig(mapOf(TopLevelPropertyNaming.CONSTANT_PATTERN to "^lowerCaseConst$"))).compileAndLint( - """ - class Foo{ - companion object { - const val lowerCaseConst = "" - } - } - """.trimIndent() - ) - ).isEmpty() + fun `should use custom name top level properties`() { + val code = """ + const val lowerCaseConst = "" + """.trimIndent() + val subject = TopLevelPropertyNaming(TestConfig(TopLevelPropertyNaming.CONSTANT_PATTERN to "^lowerCaseConst$")) + assertThat(subject.lint(code)).isEmpty() } @Nested @@ -87,4 +81,19 @@ class TopLevelPropertyNamingSpec { io.gitlab.arturbosch.detekt.test.assertThat(subject.lint(code)).hasSize(1) } } + + @Test + fun `should not care about no top level properties`() { + val code = """ + class Foo{ + val __baz = "" + companion object { + const val __bar = "" + val __foo = "" + } + } + """.trimIndent() + + assertThat(subject.compileAndLint(code)).isEmpty() + } }