From 660408404fd33dcedd70803f34ee2d85b5a7e503 Mon Sep 17 00:00:00 2001 From: Gouri Panda Date: Sat, 16 Jul 2022 00:04:54 +0530 Subject: [PATCH] ReturnCount.excludedFunctions should be a List --- .../arturbosch/detekt/api/SplitPattern.kt | 8 ++++++-- .../main/resources/default-detekt-config.yml | 3 ++- .../detekt/rules/style/ReturnCount.kt | 18 ++++++------------ .../detekt/rules/style/ReturnCountSpec.kt | 2 +- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/SplitPattern.kt b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/SplitPattern.kt index 1450f2a11646..ac4f8aaf13d1 100644 --- a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/SplitPattern.kt +++ b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/SplitPattern.kt @@ -17,6 +17,8 @@ open class SplitPattern( .mapIf(removeTrailingAsterisks) { seq -> seq.map { it.removePrefix("*") } .map { it.removeSuffix("*") } + .map { it.removePrefix("[") } + .map { it.removeSuffix("]") } } .toList() @@ -28,7 +30,8 @@ open class SplitPattern( /** * Does any part contain given [value]? */ - fun contains(value: String?): Boolean = excludes.any { value?.contains(it, ignoreCase = true) == true } + fun contains(value: String?): Boolean = + excludes.any { value?.contains(it, ignoreCase = true) == true } /** * Is there any element which matches the given [value]? @@ -43,7 +46,8 @@ open class SplitPattern( /** * Finds all parts which match the given [value]. */ - fun matches(value: String): List = excludes.filter { value.contains(it, ignoreCase = true) } + fun matches(value: String): List = + excludes.filter { value.contains(it, ignoreCase = true) } /** * Tests if any part starts with the given [value] diff --git a/detekt-core/src/main/resources/default-detekt-config.yml b/detekt-core/src/main/resources/default-detekt-config.yml index 462058ca590c..b83d5201eb6b 100644 --- a/detekt-core/src/main/resources/default-detekt-config.yml +++ b/detekt-core/src/main/resources/default-detekt-config.yml @@ -626,7 +626,8 @@ style: ReturnCount: active: true max: 2 - excludedFunctions: 'equals' + excludedFunctions: + - 'equals' excludeLabeled: false excludeReturnFromLambda: true excludeGuardClauses: false diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCount.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCount.kt index 1d6d69e53eb2..9a6f6f4bb597 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCount.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCount.kt @@ -1,14 +1,7 @@ +@file:Suppress("WildcardImport", "NoWildcardImports") package io.gitlab.arturbosch.detekt.rules.style -import io.gitlab.arturbosch.detekt.api.CodeSmell -import io.gitlab.arturbosch.detekt.api.Config -import io.gitlab.arturbosch.detekt.api.Debt -import io.gitlab.arturbosch.detekt.api.Entity -import io.gitlab.arturbosch.detekt.api.Issue -import io.gitlab.arturbosch.detekt.api.Rule -import io.gitlab.arturbosch.detekt.api.Severity -import io.gitlab.arturbosch.detekt.api.SplitPattern -import io.gitlab.arturbosch.detekt.api.config +import io.gitlab.arturbosch.detekt.api.* import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.rules.parentsOfTypeUntil @@ -59,8 +52,8 @@ class ReturnCount(config: Config = Config.empty) : Rule(config) { @Configuration("define the maximum number of return statements allowed per function") private val max: Int by config(2) - @Configuration("define a free-form comma separated list of function names to be ignored by this check") - private val excludedFunctions: SplitPattern by config("equals") { SplitPattern(it) } + @Configuration("define a list of function names to be ignored by this check") + private val excludedFunctions: SplitPattern by config(listOf("equals")) { SplitPattern(it.toString()) } @Configuration("if labeled return statements should be ignored") private val excludeLabeled: Boolean by config(false) @@ -90,7 +83,8 @@ class ReturnCount(config: Config = Config.empty) : Rule(config) { } } - private fun shouldBeIgnored(function: KtNamedFunction) = excludedFunctions.contains(function.name) + private fun shouldBeIgnored(function: KtNamedFunction) = + excludedFunctions.contains(function.name) private fun countReturnStatements(function: KtNamedFunction): Int { fun KtReturnExpression.isExcluded(): Boolean = when { diff --git a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCountSpec.kt b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCountSpec.kt index 9abd3b37a9b5..1ce28adf704a 100644 --- a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCountSpec.kt +++ b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ReturnCountSpec.kt @@ -347,7 +347,7 @@ class ReturnCountSpec { TestConfig( mapOf( MAX to "2", - EXCLUDED_FUNCTIONS to "test1,test2" + EXCLUDED_FUNCTIONS to listOf("test1", "test2") ) ) ).compileAndLint(code)