From 427fa44a55aeddafa9f7b1113c1fc06bee2236dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B3bert=20Papp?= Date: Tue, 5 Dec 2023 16:31:01 +0000 Subject: [PATCH] Improve UnnamedParameterUse message (change CALL_EXPRESSION to actual function name) (#6681) * Add test for current behavior and shorten message * Focus on the function call for reporting * Report the function name in the message rather than CALL_EXPRESSION + grammar * Always report something --- .../detekt/rules/bugs/UnnamedParameterUse.kt | 7 ++++--- .../rules/bugs/UnnamedParameterUseSpec.kt | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUse.kt b/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUse.kt index e1c6540bcdac..80a92af9e86f 100644 --- a/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUse.kt +++ b/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUse.kt @@ -75,6 +75,7 @@ import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf */ @RequiresTypeResolution class UnnamedParameterUse(config: Config = Config.empty) : Rule(config) { + override val issue = Issue( javaClass.simpleName, "Passing no named parameters can cause issue when parameters order change", @@ -121,12 +122,12 @@ class UnnamedParameterUse(config: Config = Config.empty) : Rule(config) { } if (namedArgumentList.any { it.first.not() }) { + val target = expression.calleeExpression ?: expression report( CodeSmell( issue, - Entity.from(expression), - "$expression uses unnamed parameters. Consider using named parameters as they make usage " + - "of function more safe" + Entity.from(target), + "Consider using named parameters in ${target.text} as they make usage of the function more safe." ) ) } diff --git a/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUseSpec.kt b/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUseSpec.kt index ea590386da8a..c205f050cfa7 100644 --- a/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUseSpec.kt +++ b/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnnamedParameterUseSpec.kt @@ -89,6 +89,23 @@ class UnnamedParameterUseSpec(private val env: KotlinCoreEnvironment) { ).hasSize(1) } + @Test + fun `report uses the function name as location and message`() { + val code = """ + fun f(enabled: Boolean, shouldLog: Boolean) { + if (shouldLog) println(enabled) + } + + fun test() { + f(false, true) + } + """.trimIndent() + assertThat(subject.compileAndLintWithContext(env, code)) + .hasTextLocations(102 to 103) + .singleElement() + .hasMessage("Consider using named parameters in f as they make usage of the function more safe.") + } + @Test fun `does not report two unnamed param when both are same`() { val code = """