diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index 901df76e90b..185fc328469 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -69,6 +69,8 @@ formatting: active: true android: false autoCorrect: true + ContextReceiverMapping: + active: true Filename: active: false FunctionReturnTypeSpacing: @@ -77,6 +79,8 @@ formatting: active: true MaximumLineLength: active: false + NoSemicolons: + active: false # https://github.com/pinterest/ktlint/issues/1733 NullableTypeSpacing: active: true ParameterListSpacing: diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRule.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRule.kt index 7016ea15ca2..cb2473e63e9 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRule.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRule.kt @@ -1,10 +1,9 @@ package io.gitlab.arturbosch.detekt.formatting -import com.pinterest.ktlint.core.KtLint import com.pinterest.ktlint.core.Rule.VisitorModifier.RunAsLateAsPossible -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties.codeStyleSetProperty import com.pinterest.ktlint.core.api.EditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.CODE_STYLE_PROPERTY +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty import io.github.detekt.psi.fileName import io.github.detekt.psi.toFilePath import io.gitlab.arturbosch.detekt.api.CodeSmell @@ -78,21 +77,20 @@ abstract class FormattingRule(config: Config) : Rule(config) { this.root = root positionByOffset = KtLintLineColCalculator .calculateLineColByOffset(KtLintLineColCalculator.normalizeText(root.text)) - root.node.putUserData(KtLint.FILE_PATH_USER_DATA_KEY, root.name) wrapping.beforeFirstNode(computeEditorConfigProperties()) root.node.visitASTNodes() wrapping.afterLastNode() } - open fun overrideEditorConfigProperties(): Map, String>? = null + open fun overrideEditorConfigProperties(): Map, String>? = null private fun computeEditorConfigProperties(): EditorConfigProperties { val usesEditorConfigProperties = overrideEditorConfigProperties()?.toMutableMap() ?: mutableMapOf() if (isAndroid) { - usesEditorConfigProperties[codeStyleSetProperty] = "android" + usesEditorConfigProperties[CODE_STYLE_PROPERTY] = "android" } return buildMap { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/KtLintMultiRule.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/KtLintMultiRule.kt index 40459ae5044..a4874ff6b53 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/KtLintMultiRule.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/KtLintMultiRule.kt @@ -9,6 +9,7 @@ import io.gitlab.arturbosch.detekt.formatting.wrappers.BlockCommentInitialStarAl import io.gitlab.arturbosch.detekt.formatting.wrappers.ChainWrapping import io.gitlab.arturbosch.detekt.formatting.wrappers.CommentSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.CommentWrapping +import io.gitlab.arturbosch.detekt.formatting.wrappers.ContextReceiverMapping import io.gitlab.arturbosch.detekt.formatting.wrappers.DiscouragedCommentLocation import io.gitlab.arturbosch.detekt.formatting.wrappers.EnumEntryNameCase import io.gitlab.arturbosch.detekt.formatting.wrappers.Filename @@ -124,6 +125,7 @@ class KtLintMultiRule(config: Config = Config.empty) : // Wrappers for ktlint-ruleset-experimental rules. Disabled by default. BlockCommentInitialStarAlignment(config), CommentWrapping(config), + ContextReceiverMapping(config), DiscouragedCommentLocation(config), FunctionReturnTypeSpacing(config), FunKeywordSpacing(config), diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ArgumentListWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ArgumentListWrapping.kt index 758f87542a7..ece6844b3b6 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ArgumentListWrapping.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ArgumentListWrapping.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY import com.pinterest.ktlint.ruleset.standard.ArgumentListWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -27,9 +28,9 @@ class ArgumentListWrapping(config: Config) : FormattingRule(config) { @Configuration("maximum line length") private val maxLineLength by configWithAndroidVariants(120, 100) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), - DefaultEditorConfigProperties.maxLineLengthProperty to maxLineLength.toString() + INDENT_SIZE_PROPERTY to indentSize.toString(), + MAX_LINE_LENGTH_PROPERTY to maxLineLength.toString() ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentWrapping.kt index 3be8bb186b2..8460b9339fd 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentWrapping.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentWrapping.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY import com.pinterest.ktlint.ruleset.experimental.CommentWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -21,8 +21,8 @@ class CommentWrapping(config: Config) : FormattingRule(config) { @Configuration("indentation size") private val indentSize by config(4) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), + INDENT_SIZE_PROPERTY to indentSize.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ContextReceiverMapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ContextReceiverMapping.kt new file mode 100644 index 00000000000..317d8aecc9a --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ContextReceiverMapping.kt @@ -0,0 +1,34 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.experimental.ContextReceiverWrappingRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants +import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.api.internal.Configuration +import io.gitlab.arturbosch.detekt.formatting.FormattingRule + +/** + * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#content-receiver-wrapping) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class ContextReceiverMapping(config: Config) : FormattingRule(config) { + + override val wrapping = ContextReceiverWrappingRule() + override val issue = issueFor("Reports mis-indented code") + + @Configuration("maximum line length") + private val maxLineLength: Int by configWithAndroidVariants(120, 100) + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + MAX_LINE_LENGTH_PROPERTY to maxLineLength.toString(), + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FinalNewline.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FinalNewline.kt index 9b2990a1be2..a7f925e330d 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FinalNewline.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FinalNewline.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INSERT_FINAL_NEWLINE_PROPERTY import com.pinterest.ktlint.ruleset.standard.FinalNewlineRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -26,6 +26,6 @@ class FinalNewline(config: Config) : FormattingRule(config) { @Configuration("report absence or presence of a newline") private val insertFinalNewLine by config(true) - override fun overrideEditorConfigProperties(): Map, String> = - mapOf(DefaultEditorConfigProperties.insertNewLineProperty to insertFinalNewLine.toString()) + override fun overrideEditorConfigProperties(): Map, String> = + mapOf(INSERT_FINAL_NEWLINE_PROPERTY to insertFinalNewLine.toString()) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionSignature.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionSignature.kt index 5ce2ffc619c..44855b44a18 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionSignature.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionSignature.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY import com.pinterest.ktlint.ruleset.experimental.FunctionSignatureRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -32,12 +33,12 @@ class FunctionSignature(config: Config) : FormattingRule(config) { @Configuration("indentation size") private val indentSize by config(4) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - FunctionSignatureRule.forceMultilineWhenParameterCountGreaterOrEqualThanProperty to + FunctionSignatureRule.FORCE_MULTILINE_WHEN_PARAMETER_COUNT_GREATER_OR_EQUAL_THAN_PROPERTY to forceMultilineWhenParameterCountGreaterOrEqualThan.toString(), - FunctionSignatureRule.functionBodyExpressionWrappingProperty to functionBodyExpressionWrapping, - DefaultEditorConfigProperties.maxLineLengthProperty to maxLineLength.toString(), - DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), + FunctionSignatureRule.FUNCTION_BODY_EXPRESSION_WRAPPING_PROPERTY to functionBodyExpressionWrapping, + MAX_LINE_LENGTH_PROPERTY to maxLineLength.toString(), + INDENT_SIZE_PROPERTY to indentSize.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ImportOrdering.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ImportOrdering.kt index a44fa4ddc86..402ff4f58d5 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ImportOrdering.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ImportOrdering.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty import com.pinterest.ktlint.ruleset.standard.ImportOrderingRule +import com.pinterest.ktlint.ruleset.standard.ImportOrderingRule.Companion.IJ_KOTLIN_IMPORTS_LAYOUT_PROPERTY import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault @@ -24,8 +25,8 @@ class ImportOrdering(config: Config) : FormattingRule(config) { @Configuration("the import ordering layout") private val layout: String by configWithAndroidVariants(IDEA_PATTERN, ASCII_PATTERN) - override fun overrideEditorConfigProperties(): Map, String> = - mapOf(ImportOrderingRule.ideaImportsLayoutProperty to layout) + override fun overrideEditorConfigProperties(): Map, String> = + mapOf(IJ_KOTLIN_IMPORTS_LAYOUT_PROPERTY to layout) companion object { const val ASCII_PATTERN = "*" diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Indentation.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Indentation.kt index 00450be08ac..9ec29f7f984 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Indentation.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Indentation.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY import com.pinterest.ktlint.ruleset.standard.IndentationRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -28,8 +28,8 @@ class Indentation(config: Config) : FormattingRule(config) { @Suppress("UnusedPrivateMember") private val continuationIndentSize by config(4) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), + INDENT_SIZE_PROPERTY to indentSize.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/KdocWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/KdocWrapping.kt index 715b99abde4..4947993b36e 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/KdocWrapping.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/KdocWrapping.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY import com.pinterest.ktlint.ruleset.experimental.KdocWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -21,8 +21,8 @@ class KdocWrapping(config: Config) : FormattingRule(config) { @Configuration("indentation size") private val indentSize by config(4) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), + INDENT_SIZE_PROPERTY to indentSize.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MaximumLineLength.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MaximumLineLength.kt index e0c1d67772e..ef20de092de 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MaximumLineLength.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MaximumLineLength.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY import com.pinterest.ktlint.ruleset.standard.MaxLineLengthRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -32,9 +32,9 @@ class MaximumLineLength(config: Config) : FormattingRule(config) { @Configuration("ignore back ticked identifier") private val ignoreBackTickedIdentifier by config(false) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - MaxLineLengthRule.ignoreBackTickedIdentifierProperty to ignoreBackTickedIdentifier.toString(), - DefaultEditorConfigProperties.maxLineLengthProperty to maxLineLength.toString(), + MaxLineLengthRule.IGNORE_BACKTICKED_IDENTIFIER_PROPERTY to ignoreBackTickedIdentifier.toString(), + MAX_LINE_LENGTH_PROPERTY to maxLineLength.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoWildcardImports.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoWildcardImports.kt index 438588659f2..42e9fac557e 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoWildcardImports.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoWildcardImports.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty import com.pinterest.ktlint.ruleset.standard.NoWildcardImportsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -20,9 +20,9 @@ class NoWildcardImports(config: Config) : FormattingRule(config) { @Configuration("Defines allowed wildcard imports") private val packagesToUseImportOnDemandProperty by config(ALLOWED_WILDCARD_IMPORTS) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - NoWildcardImportsRule.packagesToUseImportOnDemandProperty to packagesToUseImportOnDemandProperty + NoWildcardImportsRule.IJ_KOTLIN_PACKAGES_TO_USE_IMPORT_ON_DEMAND to packagesToUseImportOnDemandProperty ) companion object { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListWrapping.kt index 8f315391ff9..2a8c0a66805 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListWrapping.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListWrapping.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY import com.pinterest.ktlint.ruleset.standard.ParameterListWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -29,8 +29,8 @@ class ParameterListWrapping(config: Config) : FormattingRule(config) { @Suppress("UnusedPrivateMember") private val indentSize by config(4) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - DefaultEditorConfigProperties.maxLineLengthProperty to maxLineLength.toString() + MAX_LINE_LENGTH_PROPERTY to maxLineLength.toString() ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnCallSite.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnCallSite.kt index 9da9778101e..fb3063db450 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnCallSite.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnCallSite.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty import com.pinterest.ktlint.ruleset.standard.TrailingCommaOnCallSiteRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants @@ -30,8 +30,8 @@ class TrailingCommaOnCallSite(config: Config) : FormattingRule(config) { defaultAndroidValue = false, ) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - TrailingCommaOnCallSiteRule.allowTrailingCommaOnCallSiteProperty to useTrailingCommaOnCallSite.toString(), + TrailingCommaOnCallSiteRule.TRAILING_COMMA_ON_CALL_SITE_PROPERTY to useTrailingCommaOnCallSite.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnDeclarationSite.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnDeclarationSite.kt index 8ace3cb4911..2a773c5f832 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnDeclarationSite.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TrailingCommaOnDeclarationSite.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty import com.pinterest.ktlint.ruleset.standard.TrailingCommaOnDeclarationSiteRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants @@ -30,9 +30,9 @@ class TrailingCommaOnDeclarationSite(config: Config) : FormattingRule(config) { defaultAndroidValue = false, ) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - TrailingCommaOnDeclarationSiteRule.allowTrailingCommaProperty to + TrailingCommaOnDeclarationSiteRule.TRAILING_COMMA_ON_DECLARATION_SITE_PROPERTY to useTrailingCommaOnDeclarationSite.toString(), ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Wrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Wrapping.kt index 55e4388f127..9f2fbace7a5 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Wrapping.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Wrapping.kt @@ -1,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.UsesEditorConfigProperties +import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.core.api.editorconfig.INDENT_SIZE_PROPERTY import com.pinterest.ktlint.ruleset.standard.WrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config @@ -23,8 +23,8 @@ class Wrapping(config: Config) : FormattingRule(config) { @Configuration("indentation size") private val indentSize by config(4) - override fun overrideEditorConfigProperties(): Map, String> = + override fun overrideEditorConfigProperties(): Map, String> = mapOf( - DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), + INDENT_SIZE_PROPERTY to indentSize.toString(), ) } diff --git a/detekt-formatting/src/main/resources/config/config.yml b/detekt-formatting/src/main/resources/config/config.yml index 3b802ac4658..a5ddff50e71 100644 --- a/detekt-formatting/src/main/resources/config/config.yml +++ b/detekt-formatting/src/main/resources/config/config.yml @@ -26,6 +26,11 @@ formatting: active: false autoCorrect: true indentSize: 4 + ContextReceiverMapping: + active: false + autoCorrect: true + maxLineLength: 120 + indentSize: 4 DiscouragedCommentLocation: active: false autoCorrect: true diff --git a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRuleSpec.kt b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRuleSpec.kt index aaa3699a077..0a7f96c676f 100644 --- a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRuleSpec.kt +++ b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/FormattingRuleSpec.kt @@ -60,7 +60,7 @@ class FormattingRuleSpec { """.trimIndent() ) - assertThat(findings.first().signature).isEqualTo("Test.kt:2") + assertThat(findings.first().signature).isEqualTo("Test.kt:1") } @Test @@ -73,7 +73,7 @@ class FormattingRuleSpec { """.trimIndent() ) - assertThat(findings.first().signature).isEqualTo("test.test.test.Test.kt:3") + assertThat(findings.first().signature).isEqualTo("test.test.test.Test.kt:2") } } diff --git a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/TestFiles.kt b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/TestFiles.kt index 2989a7a54bc..dbc3c39ecfa 100644 --- a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/TestFiles.kt +++ b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/TestFiles.kt @@ -1,6 +1,5 @@ package io.gitlab.arturbosch.detekt.formatting -import com.pinterest.ktlint.core.ast.visit import io.github.detekt.test.utils.compileContentForTest import io.github.detekt.test.utils.compileForTest import io.github.detekt.test.utils.resource diff --git a/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnsafeCast.kt b/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnsafeCast.kt index afe79d4fc33..124ce042d23 100644 --- a/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnsafeCast.kt +++ b/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnsafeCast.kt @@ -46,7 +46,7 @@ class UnsafeCast(config: Config = Config.empty) : Rule(config) { override fun visitBinaryWithTypeRHSExpression(expression: KtBinaryExpressionWithTypeRHS) { if (bindingContext.diagnostics.forElement(expression.operationReference) - .any { it.factory == Errors.CAST_NEVER_SUCCEEDS } + .any { it.factory == Errors.CAST_NEVER_SUCCEEDS } ) { report( CodeSmell( diff --git a/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnusedUnaryOperator.kt b/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnusedUnaryOperator.kt index 603a4becf2c..6030aba0da0 100644 --- a/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnusedUnaryOperator.kt +++ b/detekt-rules-errorprone/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/UnusedUnaryOperator.kt @@ -56,8 +56,8 @@ class UnusedUnaryOperator(config: Config = Config.empty) : Rule(config) { if (operationToken != KtTokens.PLUS && operationToken != KtTokens.MINUS) return if (expression.node.leaves(forward = false) - .takeWhile { it is PsiWhiteSpace || it is PsiComment } - .none { it is PsiWhiteSpace && it.textContains('\n') } + .takeWhile { it is PsiWhiteSpace || it is PsiComment } + .none { it is PsiWhiteSpace && it.textContains('\n') } ) { return } diff --git a/detekt-rules-ruleauthors/src/main/kotlin/io/gitlab/arturbosch/detekt/authors/ViolatesTypeResolutionRequirements.kt b/detekt-rules-ruleauthors/src/main/kotlin/io/gitlab/arturbosch/detekt/authors/ViolatesTypeResolutionRequirements.kt index ff15f0e897a..879bf4330f1 100644 --- a/detekt-rules-ruleauthors/src/main/kotlin/io/gitlab/arturbosch/detekt/authors/ViolatesTypeResolutionRequirements.kt +++ b/detekt-rules-ruleauthors/src/main/kotlin/io/gitlab/arturbosch/detekt/authors/ViolatesTypeResolutionRequirements.kt @@ -80,14 +80,16 @@ class ViolatesTypeResolutionRequirements(config: Config = Config.empty) : Rule(c } } -context(BaseRule) private inline fun KtClass.extendsFrom(kClass: KClass): Boolean { +context(BaseRule) +private inline fun KtClass.extendsFrom(kClass: KClass): Boolean { return bindingContext[BindingContext.CLASS, this] ?.getAllSuperclassesWithoutAny() .orEmpty() .any { it.fqNameOrNull()?.toString() == checkNotNull(kClass.qualifiedName) } } -context(BaseRule) private inline fun KtClass.isAnnotatedWith(kClass: KClass): Boolean { +context(BaseRule) +private inline fun KtClass.isAnnotatedWith(kClass: KClass): Boolean { return annotationEntries .asSequence() .mapNotNull { it.typeReference } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 57ae46a2041..7aaab246a33 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ dokka = "1.7.20" jacoco = "0.8.8" kotlin = "1.7.21" -ktlint = "0.47.1" +ktlint = "0.48.0" junit = "5.9.1" contester = "0.2.0"