diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 55e881dba..cf6ec6bdf 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Contributing to detekt - Read [this article](https://chris.beams.io/posts/git-commit/) before writing commit messages -- Use `gradle build -x dokka` to build the source but exclude documentation jar generating to save time. +- Use `gradle build -x dokkaJekyll` to build the source but exclude documentation jar generating to save time. - `gradle detekt` should not report any errors - This repository follows the [Kotlin Coding Conventions](https://kotlinlang.org/docs/reference/coding-conventions.html) which are enforced by ktlint when running `gradle detekt`. - Make sure your IDE uses [ktlint](https://github.com/pinterest/ktlint) formatting rules as well as the settings in [.editorconfig](../.editorconfig) diff --git a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Config.kt b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Config.kt index b6742479e..e65203ef0 100644 --- a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Config.kt +++ b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Config.kt @@ -55,6 +55,7 @@ interface Config { val empty: Config = EmptyConfig const val ACTIVE_KEY: String = "active" + const val AUTO_CORRECT_KEY: String = "autoCorrect" const val EXCLUDES_KEY: String = "excludes" const val INCLUDES_KEY: String = "includes" const val CONFIG_SEPARATOR: String = ">" diff --git a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/ConfigAware.kt b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/ConfigAware.kt index ddd73dc67..f8557c03c 100644 --- a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/ConfigAware.kt +++ b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/ConfigAware.kt @@ -24,7 +24,7 @@ interface ConfigAware : Config { /** * Wrapped configuration of the ruleSet this rule is in. - * Use #valueOrDefault function to retrieve properties specified for the rule + * Use [valueOrDefault] function to retrieve properties specified for the rule * implementing this interface instead. * Only use this property directly if you need a specific rule set property. */ @@ -38,8 +38,8 @@ interface ConfigAware : Config { * For auto correction to work the rule set itself enable it. */ val autoCorrect: Boolean - get() = valueOrDefault("autoCorrect", false) && - ruleSetConfig.valueOrDefault("autoCorrect", true) + get() = valueOrDefault(Config.AUTO_CORRECT_KEY, false) && + ruleSetConfig.valueOrDefault(Config.AUTO_CORRECT_KEY, true) /** * Is this rule specified as active in configuration? diff --git a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Context.kt b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Context.kt index 2cbfcfd76..4a94124b1 100644 --- a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Context.kt +++ b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Context.kt @@ -21,15 +21,16 @@ interface Context { * An alias set can be given to additionally check if an alias was used when suppressing. * Additionally suppression by rule set id is supported. */ - fun report(finding: Finding, aliases: Set = emptySet(), ruleSetId: RuleSetId? = null) { - report(finding, aliases, null) - } + fun report(finding: Finding, aliases: Set = emptySet(), ruleSetId: RuleSetId? = null) /** - * Same as [report] but reports a list of findings. + * Same as [report] but reports a list of [findings]. */ - fun report(findings: List, aliases: Set = emptySet(), ruleSetId: RuleSetId? = null) { - report(findings, aliases, null) + fun report(findings: List, + aliases: Set = emptySet(), + ruleSetId: RuleSetId? = null + ) { + findings.forEach { report(it, aliases, ruleSetId) } } /** @@ -65,16 +66,6 @@ open class DefaultContext : Context { } } - /** - * Reports a list of code smell findings. - * - * Before adding a finding, it is checked if it is not suppressed - * by @Suppress or @SuppressWarnings annotations. - */ - override fun report(findings: List, aliases: Set, ruleSetId: RuleSetId?) { - findings.forEach { report(it, aliases, ruleSetId) } - } - final override fun clearFindings() { _findings = mutableListOf() } diff --git a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Rule.kt b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Rule.kt index 5d388815f..1078ca56c 100644 --- a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Rule.kt +++ b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Rule.kt @@ -38,7 +38,7 @@ abstract class Rule( val aliases: Set get() = valueOrDefault("aliases", defaultRuleIdAliases) /** - * The default names which can be used instead of this #ruleId to refer to this rule in suppression's. + * The default names which can be used instead of this [ruleId] to refer to this rule in suppression's. * * When overriding this property make sure to meet following structure for detekt-generator to pick * it up and generate documentation for aliases: diff --git a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/DisabledAutoCorrectConfig.kt b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/DisabledAutoCorrectConfig.kt index 743e0f5a2..193751a00 100644 --- a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/DisabledAutoCorrectConfig.kt +++ b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/DisabledAutoCorrectConfig.kt @@ -9,12 +9,12 @@ class DisabledAutoCorrectConfig(private val wrapped: Config) : Config, Validatab override fun subConfig(key: String): Config = DisabledAutoCorrectConfig(wrapped.subConfig(key)) override fun valueOrDefault(key: String, default: T): T = when (key) { - "autoCorrect" -> false as T + Config.AUTO_CORRECT_KEY -> false as T else -> wrapped.valueOrDefault(key, default) } override fun valueOrNull(key: String): T? = when (key) { - "autoCorrect" -> false as T + Config.AUTO_CORRECT_KEY -> false as T else -> wrapped.valueOrNull(key) } diff --git a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/FailFastConfig.kt b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/FailFastConfig.kt index 6b48c3d96..45680fc42 100644 --- a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/FailFastConfig.kt +++ b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/FailFastConfig.kt @@ -12,7 +12,7 @@ data class FailFastConfig(private val originalConfig: Config, private val defaul override fun valueOrDefault(key: String, default: T): T { return when (key) { Config.ACTIVE_KEY -> originalConfig.valueOrDefault(key, true) as T - "maxIssues" -> originalConfig.valueOrDefault(key, 0) as T + MAX_ISSUES_KEY -> originalConfig.valueOrDefault(key, 0) as T else -> originalConfig.valueOrDefault(key, defaultConfig.valueOrDefault(key, default)) } } @@ -20,7 +20,7 @@ data class FailFastConfig(private val originalConfig: Config, private val defaul override fun valueOrNull(key: String): T? { return when (key) { Config.ACTIVE_KEY -> originalConfig.valueOrNull(key) ?: true as? T - "maxIssues" -> originalConfig.valueOrNull(key) ?: 0 as? T + MAX_ISSUES_KEY -> originalConfig.valueOrNull(key) ?: 0 as? T else -> originalConfig.valueOrNull(key) ?: defaultConfig.valueOrNull(key) } } diff --git a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/IssueExtension.kt b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/IssueExtension.kt index 6fcced3a6..3851a04b9 100644 --- a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/IssueExtension.kt +++ b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/IssueExtension.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.com.intellij.openapi.util.Key private val WEIGHTED_ISSUES_COUNT_KEY = Key.create("WEIGHTED_ISSUES_COUNT") private const val WEIGHTS = "weights" -internal const val MAX_ISSUES = "maxIssues" +internal const val MAX_ISSUES_KEY: String = "maxIssues" internal fun Detektion.getOrComputeWeightedAmountOfIssues(config: Config): Int { val maybeAmount = this.getData(WEIGHTED_ISSUES_COUNT_KEY) diff --git a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/MaxIssueCheck.kt b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/MaxIssueCheck.kt index 53cd9bde5..16ac4ef95 100644 --- a/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/MaxIssueCheck.kt +++ b/detekt-core/src/main/kotlin/io/gitlab/arturbosch/detekt/core/config/MaxIssueCheck.kt @@ -12,7 +12,7 @@ internal class MaxIssueCheck( private val policy: RulesSpec.MaxIssuePolicy = run { if (rulesSpec.maxIssuePolicy == RulesSpec.MaxIssuePolicy.NonSpecified) { val configuredMaxIssues = config.subConfig(BUILD) - .valueOrNull(MAX_ISSUES) + .valueOrNull(MAX_ISSUES_KEY) when (configuredMaxIssues) { null -> rulesSpec.maxIssuePolicy diff --git a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/rulesetpage/ConfigPrinter.kt b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/rulesetpage/ConfigPrinter.kt index 96e632e67..bd71aafdb 100644 --- a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/rulesetpage/ConfigPrinter.kt +++ b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/rulesetpage/ConfigPrinter.kt @@ -48,9 +48,9 @@ object ConfigPrinter : DocumentationPrinter> { } rules.forEach { rule -> node(rule.name) { - keyValue { "active" to "${rule.active}" } + keyValue { Config.ACTIVE_KEY to "${rule.active}" } if (rule.autoCorrect) { - keyValue { "autoCorrect" to "true" } + keyValue { Config.AUTO_CORRECT_KEY to "true" } } val ruleExclusion = exclusions.singleOrNull { it.isExcluded(rule) } if (ruleExclusion != null) {