From 121b0d883f3dbe0d4bc684c1f4cf36b8d0b217a0 Mon Sep 17 00:00:00 2001 From: Artur Bosch Date: Sun, 25 Sep 2022 21:20:40 +0200 Subject: [PATCH] Report LabeledExpression as the label instead of the whole expression (#5351) Closes #5316 --- .../detekt/rules/complexity/LabeledExpression.kt | 8 ++++---- .../detekt/rules/complexity/LabeledExpressionSpec.kt | 8 ++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/detekt-rules-complexity/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpression.kt b/detekt-rules-complexity/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpression.kt index 85e16753bd0..83a8aedaa38 100644 --- a/detekt-rules-complexity/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpression.kt +++ b/detekt-rules-complexity/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpression.kt @@ -76,10 +76,10 @@ class LabeledExpression(config: Config = Config.empty) : Rule(config) { override fun visitExpressionWithLabel(expression: KtExpressionWithLabel) { super.visitExpressionWithLabel(expression) if (expression !is KtThisExpression || isNotReferencingOuterClass(expression)) { - expression.getLabelName()?.let { labelName -> - if (ignoredLabels.none { labelName.contains(it, ignoreCase = true) }) { - report(CodeSmell(issue, Entity.from(expression), issue.description)) - } + val label = expression.getTargetLabel() + val labelName = label?.getReferencedName() + if (labelName != null && ignoredLabels.none { labelName.contains(it, ignoreCase = true) }) { + report(CodeSmell(issue, Entity.from(label), issue.description)) } } } diff --git a/detekt-rules-complexity/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpressionSpec.kt b/detekt-rules-complexity/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpressionSpec.kt index 9bfb957cca2..7a13a6ab792 100644 --- a/detekt-rules-complexity/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpressionSpec.kt +++ b/detekt-rules-complexity/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/complexity/LabeledExpressionSpec.kt @@ -1,8 +1,8 @@ package io.gitlab.arturbosch.detekt.rules.complexity import io.gitlab.arturbosch.detekt.test.TestConfig +import io.gitlab.arturbosch.detekt.test.assertThat import io.gitlab.arturbosch.detekt.test.compileAndLint -import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test class LabeledExpressionSpec { @@ -34,7 +34,11 @@ class LabeledExpressionSpec { } } """.trimIndent() - assertThat(subject.compileAndLint(code)).hasSize(1) + + val findings = subject.compileAndLint(code) + + assertThat(findings).hasSize(1) + assertThat(findings).hasStartSourceLocation(3, 28) } @Test