From b54e5c8e5310241a4c069f7881b48c5d786dfc1d Mon Sep 17 00:00:00 2001 From: Matthew Haughton <3flex@users.noreply.github.com> Date: Mon, 24 Apr 2023 04:03:57 +1000 Subject: [PATCH] Update ktlint to v0.49.0 (#6028) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- config/detekt/detekt.yml | 10 --- .../io/gitlab/arturbosch/detekt/api/Config.kt | 2 +- .../gitlab/arturbosch/detekt/cli/CliArgs.kt | 2 +- .../src/main/resources/deprecation.properties | 1 - .../suppressors/AnnotationSuppressorSpec.kt | 2 +- .../suppressors/FunctionSuppressorSpec.kt | 2 +- detekt-formatting/build.gradle.kts | 8 +-- .../detekt/formatting/FormattingRule.kt | 23 +++--- .../detekt/formatting/KtLintMultiRule.kt | 44 +++++++++--- .../wrappers/AnnotationOnSeparateLine.kt | 14 +++- .../formatting/wrappers/AnnotationSpacing.kt | 2 +- .../wrappers/ArgumentListWrapping.kt | 8 +-- .../BlockCommentInitialStarAlignment.kt | 4 +- .../formatting/wrappers/ChainWrapping.kt | 14 +++- .../formatting/wrappers/CommentSpacing.kt | 2 +- .../formatting/wrappers/CommentWrapping.kt | 8 ++- .../wrappers/ContextReceiverMapping.kt | 8 +-- .../wrappers/DiscouragedCommentLocation.kt | 2 +- .../formatting/wrappers/EnumEntryNameCase.kt | 2 +- .../formatting/wrappers/EnumWrapping.kt | 29 ++++++++ .../detekt/formatting/wrappers/Filename.kt | 2 +- .../formatting/wrappers/FinalNewline.kt | 6 +- .../formatting/wrappers/FunKeywordSpacing.kt | 4 +- .../wrappers/FunctionReturnTypeSpacing.kt | 16 ++++- .../formatting/wrappers/FunctionSignature.kt | 8 +-- .../wrappers/FunctionStartOfBodySpacing.kt | 4 +- .../wrappers/FunctionTypeReferenceSpacing.kt | 4 +- .../formatting/wrappers/IfElseBracing.kt | 28 ++++++++ .../formatting/wrappers/IfElseWrapping.kt | 28 ++++++++ .../formatting/wrappers/ImportOrdering.kt | 6 +- .../detekt/formatting/wrappers/Indentation.kt | 6 +- .../formatting/wrappers/KdocWrapping.kt | 8 ++- .../formatting/wrappers/MaximumLineLength.kt | 6 +- .../wrappers/ModifierListSpacing.kt | 4 +- .../formatting/wrappers/ModifierOrdering.kt | 2 +- .../formatting/wrappers/MultiLineIfElse.kt | 14 +++- .../wrappers/MultilineExpressionWrapping.kt | 30 ++++++++ .../wrappers/NoBlankLineBeforeRbrace.kt | 2 +- .../formatting/wrappers/NoBlankLineInList.kt | 17 +++++ .../NoBlankLinesInChainedMethodCalls.kt | 2 +- .../wrappers/NoConsecutiveBlankLines.kt | 2 +- .../wrappers/NoConsecutiveComments.kt | 14 ++++ .../formatting/wrappers/NoEmptyClassBody.kt | 2 +- .../wrappers/NoEmptyFirstLineInClassBody.kt | 29 ++++++++ .../wrappers/NoEmptyFirstLineInMethodBlock.kt | 2 +- .../wrappers/NoLineBreakAfterElse.kt | 2 +- .../wrappers/NoLineBreakBeforeAssignment.kt | 2 +- .../formatting/wrappers/NoMultipleSpaces.kt | 2 +- .../formatting/wrappers/NoSemicolons.kt | 2 +- .../formatting/wrappers/NoTrailingSpaces.kt | 2 +- .../formatting/wrappers/NoUnitReturn.kt | 2 +- .../formatting/wrappers/NoUnusedImports.kt | 2 +- .../formatting/wrappers/NoWildcardImports.kt | 4 +- .../wrappers/NullableTypeSpacing.kt | 4 +- .../detekt/formatting/wrappers/PackageName.kt | 2 +- .../wrappers/ParameterListSpacing.kt | 2 +- .../wrappers/ParameterListWrapping.kt | 10 +-- .../formatting/wrappers/ParameterWrapping.kt | 37 ++++++++++ .../formatting/wrappers/PropertyWrapping.kt | 36 ++++++++++ .../wrappers/SpacingAroundAngleBrackets.kt | 2 +- .../formatting/wrappers/SpacingAroundColon.kt | 2 +- .../formatting/wrappers/SpacingAroundComma.kt | 2 +- .../formatting/wrappers/SpacingAroundCurly.kt | 2 +- .../formatting/wrappers/SpacingAroundDot.kt | 2 +- .../wrappers/SpacingAroundDoubleColon.kt | 2 +- .../wrappers/SpacingAroundKeyword.kt | 2 +- .../wrappers/SpacingAroundOperators.kt | 2 +- .../wrappers/SpacingAroundParens.kt | 2 +- .../wrappers/SpacingAroundRangeOperator.kt | 2 +- .../wrappers/SpacingAroundUnaryOperator.kt | 2 +- ...acingBetweenDeclarationsWithAnnotations.kt | 2 +- .../SpacingBetweenDeclarationsWithComments.kt | 2 +- ...etweenFunctionNameAndOpeningParenthesis.kt | 4 +- .../formatting/wrappers/StringTemplate.kt | 2 +- .../wrappers/StringTemplateIndent.kt | 29 ++++++++ .../wrappers/TrailingCommaOnCallSite.kt | 4 +- .../TrailingCommaOnDeclarationSite.kt | 4 +- .../wrappers/TryCatchFinallySpacing.kt | 29 ++++++++ .../wrappers/TypeArgumentListSpacing.kt | 14 +++- .../wrappers/TypeParameterListSpacing.kt | 14 +++- ...ecessaryParenthesesBeforeTrailingLambda.kt | 4 +- .../detekt/formatting/wrappers/Wrapping.kt | 12 +++- .../src/main/resources/config/config.yml | 71 ++++++++++++++++--- .../detekt/formatting/CommentWrappingSpec.kt | 4 +- .../RulesWhichCantBeCorrectedSpec.kt | 8 --- .../detekt/generator/DetektPrinter.kt | 2 +- .../generator/collection/RuleVisitor.kt | 8 +-- .../printer/defaultconfig/ConfigPrinter.kt | 10 +-- .../arturbosch/detekt/DetektAndroidSpec.kt | 20 +++--- .../detekt/DetektMultiplatformSpec.kt | 6 +- .../detekt/report/ReportMergeSpec.kt | 4 +- .../detekt/internal/ClassLoaderCache.kt | 2 +- .../detekt/testkit/DslGradleRunner.kt | 7 +- .../report/sarif/SarifOutputReportSpec.kt | 2 +- .../detekt/rules/style/MaxLineLength.kt | 2 +- .../detekt/rules/style/TrailingWhitespace.kt | 2 +- .../detekt/rules/style/MagicNumberSpec.kt | 6 +- .../detekt/test/FindingsAssertions.kt | 3 +- .../detekt/tooling/api/DetektProvider.kt | 2 +- gradle/libs.versions.toml | 6 +- 100 files changed, 655 insertions(+), 194 deletions(-) create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumWrapping.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseBracing.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseWrapping.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultilineExpressionWrapping.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineInList.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveComments.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInClassBody.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterWrapping.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PropertyWrapping.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplateIndent.kt create mode 100644 detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TryCatchFinallySpacing.kt diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index 926e3be47a9..057c57c95d1 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -73,18 +73,10 @@ formatting: active: true Filename: active: false - FunctionReturnTypeSpacing: - active: true - FunctionStartOfBodySpacing: - active: true MaximumLineLength: active: false - NullableTypeSpacing: - active: true ParameterListSpacing: active: true - SpacingBetweenFunctionNameAndOpeningParenthesis: - active: true TypeParameterListSpacing: active: true @@ -218,8 +210,6 @@ style: active: true excludes: ['**/test/**', '**/*Test.kt', '**/*Spec.kt'] excludeCommentStatements: true - MultilineRawStringIndentation: - active: true NestedClassesVisibility: active: true ObjectLiteralToLambda: 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 62f9f1a1e82..150cacaa76a 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 @@ -37,7 +37,7 @@ interface Config { /** * Is thrown when loading a configuration results in errors. */ - class InvalidConfigurationError(throwable: Throwable? = null /* nullable to not break signature */) : + class InvalidConfigurationError(throwable: Throwable? = null) : RuntimeException( "Provided configuration file is invalid: Structure must be from type Map!" + throwable?.let { "\n" + it.message }.orEmpty(), diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt index 9ad3e37449c..c9b776fbb5a 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt @@ -153,7 +153,7 @@ class CliArgs { The following @Parameters are used for type resolution. When additional parameters are required the names should mirror the names found in this file (e.g. "classpath", "language-version", "jvm-target"): https://github.com/JetBrains/kotlin/blob/master/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt - */ + */ @Parameter( names = ["--classpath", "-cp"], description = "EXPERIMENTAL: Paths where to find user class files and depending jar files. " + diff --git a/detekt-core/src/main/resources/deprecation.properties b/detekt-core/src/main/resources/deprecation.properties index a7136b5a3a3..ff63eaade67 100644 --- a/detekt-core/src/main/resources/deprecation.properties +++ b/detekt-core/src/main/resources/deprecation.properties @@ -2,7 +2,6 @@ complexity>ComplexMethod=Rule is renamed to `CyclomaticComplexMethod` to disting complexity>LongParameterList>threshold=Use `functionThreshold` and `constructorThreshold` instead empty-blocks>EmptyFunctionBlock>ignoreOverriddenFunctions=Use `ignoreOverridden` instead formatting>Indentation>continuationIndentSize=`continuationIndentSize` is ignored by KtLint and will have no effect -formatting>ParameterListWrapping>indentSize=`indentSize` is ignored by KtLint and will have no effect formatting>TrailingComma=Rule is split between `TrailingCommaOnCallSite` and `TrailingCommaOnDeclarationSite` now. naming>BooleanPropertyNaming>ignoreOverridden=This configuration is ignored and will be removed in the future naming>ConstructorParameterNaming>ignoreOverridden=This configuration is ignored and will be removed in the future diff --git a/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/AnnotationSuppressorSpec.kt b/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/AnnotationSuppressorSpec.kt index 2f2c6f13756..c3e83fa5312 100644 --- a/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/AnnotationSuppressorSpec.kt +++ b/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/AnnotationSuppressorSpec.kt @@ -24,7 +24,7 @@ class AnnotationSuppressorSpec(private val env: KotlinCoreEnvironment) { inner class AnnotationSuppressorFactory { @Test fun `Factory returns null if ignoreAnnotated is not set`() { - val suppressor = annotationSuppressorFactory(buildConfigAware(/* empty */), BindingContext.EMPTY) + val suppressor = annotationSuppressorFactory(buildConfigAware(), BindingContext.EMPTY) assertThat(suppressor).isNull() } diff --git a/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/FunctionSuppressorSpec.kt b/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/FunctionSuppressorSpec.kt index eb6df02c159..8079bbf6f4c 100644 --- a/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/FunctionSuppressorSpec.kt +++ b/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/suppressors/FunctionSuppressorSpec.kt @@ -18,7 +18,7 @@ class FunctionSuppressorSpec { @Test fun `Factory returns null if ignoreFunction is not set`() { val suppressor = functionSuppressorFactory( - buildConfigAware(/* empty */), + buildConfigAware(), BindingContext.EMPTY, ) diff --git a/detekt-formatting/build.gradle.kts b/detekt-formatting/build.gradle.kts index 9e478d34036..982900ea0f4 100644 --- a/detekt-formatting/build.gradle.kts +++ b/detekt-formatting/build.gradle.kts @@ -6,13 +6,7 @@ val extraDepsToPackage: Configuration by configurations.creating dependencies { compileOnly(projects.detektApi) - implementation(libs.ktlint.rulesetStandard) { - exclude(group = "org.jetbrains.kotlin") - } - implementation(libs.ktlint.core) { - exclude(group = "org.jetbrains.kotlin") - } - implementation(libs.ktlint.rulesetExperimental) { + implementation(libs.ktlintRulesetStandard) { exclude(group = "org.jetbrains.kotlin") } 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 aa9945faf07..5c6826d195f 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,9 +1,10 @@ package io.gitlab.arturbosch.detekt.formatting -import com.pinterest.ktlint.core.Rule.VisitorModifier.RunAsLateAsPossible -import com.pinterest.ktlint.core.api.EditorConfigProperties -import com.pinterest.ktlint.core.api.editorconfig.CODE_STYLE_PROPERTY -import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.Rule.VisitorModifier.RunAsLateAsPossible +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.CODE_STYLE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfig +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_STYLE_PROPERTY import io.gitlab.arturbosch.detekt.api.CodeSmell import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.CorrectableCodeSmell @@ -24,7 +25,7 @@ import org.jetbrains.kotlin.psi.KtFile */ abstract class FormattingRule(config: Config) : Rule(config) { - abstract val wrapping: com.pinterest.ktlint.core.Rule + abstract val wrapping: com.pinterest.ktlint.rule.engine.core.api.Rule /** * Should the android style guide be enforced? @@ -54,15 +55,19 @@ abstract class FormattingRule(config: Config) : Rule(config) { open fun overrideEditorConfigProperties(): Map, String>? = null - private fun computeEditorConfigProperties(): EditorConfigProperties { + private fun computeEditorConfigProperties(): EditorConfig { val usesEditorConfigProperties = overrideEditorConfigProperties()?.toMutableMap() ?: mutableMapOf() if (isAndroid) { - usesEditorConfigProperties[CODE_STYLE_PROPERTY] = "android" + usesEditorConfigProperties[CODE_STYLE_PROPERTY] = "android_studio" + } else { + usesEditorConfigProperties[CODE_STYLE_PROPERTY] = "intellij_idea" } - return buildMap { + usesEditorConfigProperties[INDENT_STYLE_PROPERTY] = "space" + + val properties = buildMap { usesEditorConfigProperties.forEach { (editorConfigProperty, defaultValue) -> put( key = editorConfigProperty.type.name, @@ -74,6 +79,8 @@ abstract class FormattingRule(config: Config) : Rule(config) { ) } } + + return EditorConfig(properties) } private fun emitFinding(message: String, canBeAutoCorrected: Boolean, node: ASTNode) { 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 a4874ff6b53..b41aea2bde7 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 @@ -12,6 +12,7 @@ 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.EnumWrapping import io.gitlab.arturbosch.detekt.formatting.wrappers.Filename import io.gitlab.arturbosch.detekt.formatting.wrappers.FinalNewline import io.gitlab.arturbosch.detekt.formatting.wrappers.FunKeywordSpacing @@ -19,6 +20,8 @@ import io.gitlab.arturbosch.detekt.formatting.wrappers.FunctionReturnTypeSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.FunctionSignature import io.gitlab.arturbosch.detekt.formatting.wrappers.FunctionStartOfBodySpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.FunctionTypeReferenceSpacing +import io.gitlab.arturbosch.detekt.formatting.wrappers.IfElseBracing +import io.gitlab.arturbosch.detekt.formatting.wrappers.IfElseWrapping import io.gitlab.arturbosch.detekt.formatting.wrappers.ImportOrdering import io.gitlab.arturbosch.detekt.formatting.wrappers.Indentation import io.gitlab.arturbosch.detekt.formatting.wrappers.KdocWrapping @@ -26,10 +29,14 @@ import io.gitlab.arturbosch.detekt.formatting.wrappers.MaximumLineLength import io.gitlab.arturbosch.detekt.formatting.wrappers.ModifierListSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.ModifierOrdering import io.gitlab.arturbosch.detekt.formatting.wrappers.MultiLineIfElse +import io.gitlab.arturbosch.detekt.formatting.wrappers.MultilineExpressionWrapping import io.gitlab.arturbosch.detekt.formatting.wrappers.NoBlankLineBeforeRbrace +import io.gitlab.arturbosch.detekt.formatting.wrappers.NoBlankLineInList import io.gitlab.arturbosch.detekt.formatting.wrappers.NoBlankLinesInChainedMethodCalls import io.gitlab.arturbosch.detekt.formatting.wrappers.NoConsecutiveBlankLines +import io.gitlab.arturbosch.detekt.formatting.wrappers.NoConsecutiveComments import io.gitlab.arturbosch.detekt.formatting.wrappers.NoEmptyClassBody +import io.gitlab.arturbosch.detekt.formatting.wrappers.NoEmptyFirstLineInClassBody import io.gitlab.arturbosch.detekt.formatting.wrappers.NoEmptyFirstLineInMethodBlock import io.gitlab.arturbosch.detekt.formatting.wrappers.NoLineBreakAfterElse import io.gitlab.arturbosch.detekt.formatting.wrappers.NoLineBreakBeforeAssignment @@ -43,6 +50,8 @@ import io.gitlab.arturbosch.detekt.formatting.wrappers.NullableTypeSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.PackageName import io.gitlab.arturbosch.detekt.formatting.wrappers.ParameterListSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.ParameterListWrapping +import io.gitlab.arturbosch.detekt.formatting.wrappers.ParameterWrapping +import io.gitlab.arturbosch.detekt.formatting.wrappers.PropertyWrapping import io.gitlab.arturbosch.detekt.formatting.wrappers.SpacingAroundAngleBrackets import io.gitlab.arturbosch.detekt.formatting.wrappers.SpacingAroundColon import io.gitlab.arturbosch.detekt.formatting.wrappers.SpacingAroundComma @@ -58,8 +67,10 @@ import io.gitlab.arturbosch.detekt.formatting.wrappers.SpacingBetweenDeclaration import io.gitlab.arturbosch.detekt.formatting.wrappers.SpacingBetweenDeclarationsWithComments import io.gitlab.arturbosch.detekt.formatting.wrappers.SpacingBetweenFunctionNameAndOpeningParenthesis import io.gitlab.arturbosch.detekt.formatting.wrappers.StringTemplate +import io.gitlab.arturbosch.detekt.formatting.wrappers.StringTemplateIndent import io.gitlab.arturbosch.detekt.formatting.wrappers.TrailingCommaOnCallSite import io.gitlab.arturbosch.detekt.formatting.wrappers.TrailingCommaOnDeclarationSite +import io.gitlab.arturbosch.detekt.formatting.wrappers.TryCatchFinallySpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.TypeArgumentListSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.TypeParameterListSpacing import io.gitlab.arturbosch.detekt.formatting.wrappers.UnnecessaryParenthesesBeforeTrailingLambda @@ -79,14 +90,22 @@ class KtLintMultiRule(config: Config = Config.empty) : AnnotationOnSeparateLine(config), AnnotationSpacing(config), ArgumentListWrapping(config), + BlockCommentInitialStarAlignment(config), ChainWrapping(config), CommentSpacing(config), + CommentWrapping(config), EnumEntryNameCase(config), Filename(config), FinalNewline(config), + FunKeywordSpacing(config), + FunctionReturnTypeSpacing(config), + FunctionStartOfBodySpacing(config), + FunctionTypeReferenceSpacing(config), ImportOrdering(config), Indentation(config), + KdocWrapping(config), MaximumLineLength(config), + ModifierListSpacing(config), ModifierOrdering(config), MultiLineIfElse(config), NoBlankLineBeforeRbrace(config), @@ -102,8 +121,11 @@ class KtLintMultiRule(config: Config = Config.empty) : NoUnitReturn(config), NoUnusedImports(config), NoWildcardImports(config), + NullableTypeSpacing(config), PackageName(config), ParameterListWrapping(config), + ParameterWrapping(config), + PropertyWrapping(config), SpacingAroundAngleBrackets(config), SpacingAroundColon(config), SpacingAroundComma(config), @@ -117,29 +139,29 @@ class KtLintMultiRule(config: Config = Config.empty) : SpacingAroundUnaryOperator(config), SpacingBetweenDeclarationsWithAnnotations(config), SpacingBetweenDeclarationsWithComments(config), + SpacingBetweenFunctionNameAndOpeningParenthesis(config), StringTemplate(config), TrailingCommaOnCallSite(config), // in standard ruleset but not enabled by default TrailingCommaOnDeclarationSite(config), // in standard ruleset but not enabled by default + UnnecessaryParenthesesBeforeTrailingLambda(config), Wrapping(config), // Wrappers for ktlint-ruleset-experimental rules. Disabled by default. - BlockCommentInitialStarAlignment(config), - CommentWrapping(config), ContextReceiverMapping(config), DiscouragedCommentLocation(config), - FunctionReturnTypeSpacing(config), - FunKeywordSpacing(config), + EnumWrapping(config), FunctionSignature(config), - FunctionStartOfBodySpacing(config), - FunctionTypeReferenceSpacing(config), - KdocWrapping(config), - ModifierListSpacing(config), - NullableTypeSpacing(config), + IfElseBracing(config), + IfElseWrapping(config), + MultilineExpressionWrapping(config), + NoBlankLineInList(config), + NoConsecutiveComments(config), + NoEmptyFirstLineInClassBody(config), ParameterListSpacing(config), - SpacingBetweenFunctionNameAndOpeningParenthesis(config), + StringTemplateIndent(config), + TryCatchFinallySpacing(config), TypeArgumentListSpacing(config), TypeParameterListSpacing(config), - UnnecessaryParenthesesBeforeTrailingLambda(config), ) override fun visit(root: KtFile) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationOnSeparateLine.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationOnSeparateLine.kt index adbac2a31b9..b02fa8bfd5c 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationOnSeparateLine.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationOnSeparateLine.kt @@ -1,9 +1,13 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.AnnotationRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.AnnotationRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** @@ -15,4 +19,12 @@ class AnnotationOnSeparateLine(config: Config) : FormattingRule(config) { override val wrapping = AnnotationRule() override val issue = issueFor("Multiple annotations should be placed on separate lines. ") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationSpacing.kt index 1206beba60a..671d287dc92 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/AnnotationSpacing.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.AnnotationSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.AnnotationSpacingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable 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 ece6844b3b6..1ecad47afcf 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,9 +1,9 @@ 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.standard.ArgumentListWrappingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.ArgumentListWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/BlockCommentInitialStarAlignment.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/BlockCommentInitialStarAlignment.kt index 4fb272317c3..fd30a390f30 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/BlockCommentInitialStarAlignment.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/BlockCommentInitialStarAlignment.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.BlockCommentInitialStarAlignmentRule +import com.pinterest.ktlint.ruleset.standard.rules.BlockCommentInitialStarAlignmentRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -9,6 +10,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#block-comment-initial-star-alignment) for * documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class BlockCommentInitialStarAlignment(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ChainWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ChainWrapping.kt index 49ba95f05aa..5f4ba67d05e 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ChainWrapping.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ChainWrapping.kt @@ -1,9 +1,13 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.ChainWrappingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.ChainWrappingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** @@ -15,4 +19,12 @@ class ChainWrapping(config: Config) : FormattingRule(config) { override val wrapping = ChainWrappingRule() override val issue = issueFor("Checks if condition chaining is wrapped right") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentSpacing.kt index ba9d18cee34..462d69ce2af 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/CommentSpacing.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.CommentSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.CommentSpacingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable 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 8460b9339fd..a5396bffdec 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,10 +1,11 @@ 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.ruleset.experimental.CommentWrappingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.CommentWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -12,6 +13,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#comment-wrapping) for documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class CommentWrapping(config: Config) : FormattingRule(config) { 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 index 317d8aecc9a..782f07ef422 100644 --- 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 @@ -1,9 +1,9 @@ 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 com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.ContextReceiverWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/DiscouragedCommentLocation.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/DiscouragedCommentLocation.kt index 305fa64156f..f35cd09acee 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/DiscouragedCommentLocation.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/DiscouragedCommentLocation.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.DiscouragedCommentLocationRule +import com.pinterest.ktlint.ruleset.standard.rules.DiscouragedCommentLocationRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumEntryNameCase.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumEntryNameCase.kt index 5a17c111741..ea7432e20b4 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumEntryNameCase.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumEntryNameCase.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.EnumEntryNameCaseRule +import com.pinterest.ktlint.ruleset.standard.rules.EnumEntryNameCaseRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumWrapping.kt new file mode 100644 index 00000000000..d87cea8f271 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/EnumWrapping.kt @@ -0,0 +1,29 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.EnumWrappingRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#enum-wrapping) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class EnumWrapping(config: Config) : FormattingRule(config) { + + override val wrapping = EnumWrappingRule() + override val issue = + issueFor("An enum should be a single line, or each enum entry has to be placed on a separate line.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Filename.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Filename.kt index aa8dede5439..b6b5a3a673a 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Filename.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/Filename.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.FilenameRule +import com.pinterest.ktlint.ruleset.standard.rules.FilenameRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.formatting.FormattingRule 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 a7f925e330d..068f81915f1 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,8 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -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 com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INSERT_FINAL_NEWLINE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.FinalNewlineRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunKeywordSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunKeywordSpacing.kt index 1c512e2b66f..1780539a1f2 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunKeywordSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunKeywordSpacing.kt @@ -1,13 +1,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.FunKeywordSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.FunKeywordSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#fun-keyword-spacing) for documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class FunKeywordSpacing(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionReturnTypeSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionReturnTypeSpacing.kt index 0f85c9efd94..1b6e07ca99f 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionReturnTypeSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionReturnTypeSpacing.kt @@ -1,17 +1,31 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.FunctionReturnTypeSpacingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.FunctionReturnTypeSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault 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/#function-return-type-spacing) for * documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.22.0") class FunctionReturnTypeSpacing(config: Config) : FormattingRule(config) { override val wrapping = FunctionReturnTypeSpacingRule() override val issue = issueFor("Checks the spacing between colon and return type.") + + @Configuration("maximum line length") + private val maxLineLength: Int by configWithAndroidVariants(120, 100) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + MAX_LINE_LENGTH_PROPERTY to maxLineLength.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 44855b44a18..0cc7c684df5 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,9 +1,9 @@ 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.FunctionSignatureRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.FunctionSignatureRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionStartOfBodySpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionStartOfBodySpacing.kt index 9aa3148c8e8..a8e78c1c012 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionStartOfBodySpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionStartOfBodySpacing.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.FunctionStartOfBodySpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.FunctionStartOfBodySpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -9,6 +10,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#function-start-of-body-spacing) for * documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.22.0") class FunctionStartOfBodySpacing(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionTypeReferenceSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionTypeReferenceSpacing.kt index 4d73f6a8047..c8180cce0c2 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionTypeReferenceSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/FunctionTypeReferenceSpacing.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.FunctionTypeReferenceSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.FunctionTypeReferenceSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -9,6 +10,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#function-type-reference-spacing) for * documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class FunctionTypeReferenceSpacing(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseBracing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseBracing.kt new file mode 100644 index 00000000000..c48fe487866 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseBracing.kt @@ -0,0 +1,28 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.IfElseBracingRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#if-else-bracing) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class IfElseBracing(config: Config) : FormattingRule(config) { + + override val wrapping = IfElseBracingRule() + override val issue = issueFor("All branches must be wrapped in curly braces if any branches are wrapped.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseWrapping.kt new file mode 100644 index 00000000000..239dc079a1f --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/IfElseWrapping.kt @@ -0,0 +1,28 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.IfElseWrappingRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#if-else-wrapping) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class IfElseWrapping(config: Config) : FormattingRule(config) { + + override val wrapping = IfElseWrappingRule() + override val issue = issueFor("A single line if-statement may contain no more than one else-branch.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + 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 402ff4f58d5..c2f4e3bcbb7 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,8 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -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 com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.ruleset.standard.rules.ImportOrderingRule +import com.pinterest.ktlint.ruleset.standard.rules.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 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 9ec29f7f984..fa9bcaafde1 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,8 +1,8 @@ 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.ruleset.standard.IndentationRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.IndentationRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault 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 4947993b36e..01d340bd8e5 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,10 +1,11 @@ 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.ruleset.experimental.KdocWrappingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.KdocWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -12,6 +13,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#kdoc-wrapping) for documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class KdocWrapping(config: Config) : FormattingRule(config) { 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 ef20de092de..eb3e8f683fa 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,8 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -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 com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.MaxLineLengthRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierListSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierListSpacing.kt index 384d362bbd8..df43897617a 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierListSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierListSpacing.kt @@ -1,13 +1,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.ModifierListSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.ModifierListSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#modifier-list-spacing) for documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class ModifierListSpacing(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierOrdering.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierOrdering.kt index 9b34a37b699..64c6543de28 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierOrdering.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ModifierOrdering.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.ModifierOrderRule +import com.pinterest.ktlint.ruleset.standard.rules.ModifierOrderRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultiLineIfElse.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultiLineIfElse.kt index 5ba07996938..d7fe899d7ba 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultiLineIfElse.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultiLineIfElse.kt @@ -1,9 +1,13 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.MultiLineIfElseRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.MultiLineIfElseRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** @@ -15,4 +19,12 @@ class MultiLineIfElse(config: Config) : FormattingRule(config) { override val wrapping = MultiLineIfElseRule() override val issue = issueFor("Detects multiline if-else statements without braces") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultilineExpressionWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultilineExpressionWrapping.kt new file mode 100644 index 00000000000..9ace124f9d6 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/MultilineExpressionWrapping.kt @@ -0,0 +1,30 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.MultilineExpressionWrapping +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#multiline-expression-wrapping) for + * documentation. + */ +@AutoCorrectable(since = "1.23.0") +class MultilineExpressionWrapping(config: Config) : FormattingRule(config) { + + override val wrapping = MultilineExpressionWrapping() + override val issue = + issueFor("Multiline expression on the right hand side of an expression must start on a separate line.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineBeforeRbrace.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineBeforeRbrace.kt index f3677835faf..9cff54fd38a 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineBeforeRbrace.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineBeforeRbrace.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoBlankLineBeforeRbraceRule +import com.pinterest.ktlint.ruleset.standard.rules.NoBlankLineBeforeRbraceRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineInList.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineInList.kt new file mode 100644 index 00000000000..cd768b1f1cf --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLineInList.kt @@ -0,0 +1,17 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.ruleset.standard.rules.NoBlankLineInListRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.formatting.FormattingRule + +/** + * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#no-blank-lines-in-list) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class NoBlankLineInList(config: Config) : FormattingRule(config) { + + override val wrapping = NoBlankLineInListRule() + override val issue = + issueFor("Disallow blank lines in lists before, between or after any list element.") +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLinesInChainedMethodCalls.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLinesInChainedMethodCalls.kt index bc8250daf07..1ca837dfaeb 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLinesInChainedMethodCalls.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLinesInChainedMethodCalls.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoBlankLinesInChainedMethodCallsRule +import com.pinterest.ktlint.ruleset.standard.rules.NoBlankLinesInChainedMethodCallsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveBlankLines.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveBlankLines.kt index 58b52889e76..56c78be6f91 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveBlankLines.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveBlankLines.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoConsecutiveBlankLinesRule +import com.pinterest.ktlint.ruleset.standard.rules.NoConsecutiveBlankLinesRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveComments.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveComments.kt new file mode 100644 index 00000000000..3378c015103 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoConsecutiveComments.kt @@ -0,0 +1,14 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.ruleset.standard.rules.NoConsecutiveCommentsRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.formatting.FormattingRule + +/** + * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#disallow-consecutive-comments) for documentation. + */ +class NoConsecutiveComments(config: Config) : FormattingRule(config) { + + override val wrapping = NoConsecutiveCommentsRule() + override val issue = issueFor("Disallow consecutive comments in most cases.") +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyClassBody.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyClassBody.kt index c22c4261dd5..b3b7cb979d2 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyClassBody.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyClassBody.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoEmptyClassBodyRule +import com.pinterest.ktlint.ruleset.standard.rules.NoEmptyClassBodyRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInClassBody.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInClassBody.kt new file mode 100644 index 00000000000..766f1a3a6ed --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInClassBody.kt @@ -0,0 +1,29 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.NoEmptyFirstLineInClassBodyRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#disallow-empty-lines-at-start-of-class-body) + * for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class NoEmptyFirstLineInClassBody(config: Config) : FormattingRule(config) { + + override val wrapping = NoEmptyFirstLineInClassBodyRule() + override val issue = issueFor("Disallow blank lines at start of a class body.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInMethodBlock.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInMethodBlock.kt index 1848dc6077a..4cdd52d3c88 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInMethodBlock.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoEmptyFirstLineInMethodBlock.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoEmptyFirstLineInMethodBlockRule +import com.pinterest.ktlint.ruleset.standard.rules.NoEmptyFirstLineInMethodBlockRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakAfterElse.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakAfterElse.kt index 638c0ea2f61..0e106e9e6fa 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakAfterElse.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakAfterElse.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoLineBreakAfterElseRule +import com.pinterest.ktlint.ruleset.standard.rules.NoLineBreakAfterElseRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakBeforeAssignment.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakBeforeAssignment.kt index 1b6c09fee2e..e4bf033c902 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakBeforeAssignment.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoLineBreakBeforeAssignment.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoLineBreakBeforeAssignmentRule +import com.pinterest.ktlint.ruleset.standard.rules.NoLineBreakBeforeAssignmentRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoMultipleSpaces.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoMultipleSpaces.kt index 9332ea075b1..d2d0352d120 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoMultipleSpaces.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoMultipleSpaces.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoMultipleSpacesRule +import com.pinterest.ktlint.ruleset.standard.rules.NoMultipleSpacesRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoSemicolons.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoSemicolons.kt index 0072d4d51b8..cfb74e74643 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoSemicolons.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoSemicolons.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoSemicolonsRule +import com.pinterest.ktlint.ruleset.standard.rules.NoSemicolonsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoTrailingSpaces.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoTrailingSpaces.kt index 8037ab367b3..542d8f2e0cf 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoTrailingSpaces.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoTrailingSpaces.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoTrailingSpacesRule +import com.pinterest.ktlint.ruleset.standard.rules.NoTrailingSpacesRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnitReturn.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnitReturn.kt index 7dfbe903d37..895ec4892ab 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnitReturn.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnitReturn.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoUnitReturnRule +import com.pinterest.ktlint.ruleset.standard.rules.NoUnitReturnRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnusedImports.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnusedImports.kt index b31e4da087d..193b057ce6b 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnusedImports.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoUnusedImports.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.NoUnusedImportsRule +import com.pinterest.ktlint.ruleset.standard.rules.NoUnusedImportsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable 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 42e9fac557e..1466648c92f 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,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty -import com.pinterest.ktlint.ruleset.standard.NoWildcardImportsRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.ruleset.standard.rules.NoWildcardImportsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NullableTypeSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NullableTypeSpacing.kt index 0f213b76779..5733a3dc4bf 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NullableTypeSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NullableTypeSpacing.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.NullableTypeSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.NullableTypeSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -9,6 +10,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#nullable-type-spacing) for * documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.22.0") class NullableTypeSpacing(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PackageName.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PackageName.kt index a15d6d59418..86cab15b6b5 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PackageName.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PackageName.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.PackageNameRule +import com.pinterest.ktlint.ruleset.standard.rules.PackageNameRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListSpacing.kt index 790729e23e9..5452c39c25b 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterListSpacing.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.ParameterListSpacingRule +import com.pinterest.ktlint.ruleset.standard.rules.ParameterListSpacingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule 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 2a8c0a66805..ddc6694337a 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,8 +1,9 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -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 com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.ParameterListWrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants @@ -25,12 +26,11 @@ class ParameterListWrapping(config: Config) : FormattingRule(config) { private val maxLineLength: Int by configWithAndroidVariants(120, 100) @Configuration("indentation size") - @Deprecated("`indentSize` is ignored by KtLint and will have no effect") - @Suppress("UnusedPrivateMember") private val indentSize by config(4) override fun overrideEditorConfigProperties(): Map, String> = mapOf( + 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/ParameterWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterWrapping.kt new file mode 100644 index 00000000000..f9f9a11a671 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/ParameterWrapping.kt @@ -0,0 +1,37 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.ParameterWrappingRule +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.ActiveByDefault +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/standard/#parameter-wrapping) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +@ActiveByDefault(since = "1.23.0") +class ParameterWrapping(config: Config) : FormattingRule(config) { + + override val wrapping = ParameterWrappingRule() + override val issue = + issueFor("Type or value of functions and class parameters must wrap if parameters don't fit on a single line") + + @Configuration("indentation size") + private val indentSize by config(4) + + @Configuration("maximum line length") + private val maxLineLength by configWithAndroidVariants(120, 100) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + 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/PropertyWrapping.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PropertyWrapping.kt new file mode 100644 index 00000000000..abeac45e060 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/PropertyWrapping.kt @@ -0,0 +1,36 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.PropertyWrappingRule +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.ActiveByDefault +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/standard/#property-wrapping) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +@ActiveByDefault(since = "1.23.0") +class PropertyWrapping(config: Config) : FormattingRule(config) { + + override val wrapping = PropertyWrappingRule() + override val issue = issueFor("Type or value of properties must wrap if parameters don't fit on a single line") + + @Configuration("indentation size") + private val indentSize by config(4) + + @Configuration("maximum line length") + private val maxLineLength by configWithAndroidVariants(120, 100) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + 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/SpacingAroundAngleBrackets.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundAngleBrackets.kt index bae5366d5f3..ef201db83db 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundAngleBrackets.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundAngleBrackets.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundAngleBracketsRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundAngleBracketsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundColon.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundColon.kt index 19decf270e1..a0a40c670e1 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundColon.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundColon.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundColonRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundColonRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundComma.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundComma.kt index e221b43f045..0f0b757d9e7 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundComma.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundComma.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundCommaRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundCommaRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundCurly.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundCurly.kt index 9bc9fad2126..585221e6ade 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundCurly.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundCurly.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundCurlyRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundCurlyRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDot.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDot.kt index 8559bb4f8cf..70a1a38eba4 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDot.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDot.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundDotRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundDotRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDoubleColon.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDoubleColon.kt index 253e79b0776..61e0b4685cc 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDoubleColon.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundDoubleColon.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundDoubleColonRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundDoubleColonRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundKeyword.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundKeyword.kt index a89755be178..73a0a9becef 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundKeyword.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundKeyword.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundKeywordRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundKeywordRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundOperators.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundOperators.kt index a2df88da72b..ff63f4c0058 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundOperators.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundOperators.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundOperatorsRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundOperatorsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundParens.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundParens.kt index 6cf121e5572..a062aca63d7 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundParens.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundParens.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundParensRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundParensRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundRangeOperator.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundRangeOperator.kt index f52f2b20c79..485be1e9d91 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundRangeOperator.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundRangeOperator.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundRangeOperatorRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundRangeOperatorRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundUnaryOperator.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundUnaryOperator.kt index 718491ebd92..9416c8e1f62 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundUnaryOperator.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingAroundUnaryOperator.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingAroundUnaryOperatorRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingAroundUnaryOperatorRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithAnnotations.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithAnnotations.kt index 3de70ed9a96..06e215fa919 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithAnnotations.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithAnnotations.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingBetweenDeclarationsWithAnnotationsRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingBetweenDeclarationsWithAnnotationsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithComments.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithComments.kt index 8eff82529c7..a1db8bd92bc 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithComments.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenDeclarationsWithComments.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.SpacingBetweenDeclarationsWithCommentsRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingBetweenDeclarationsWithCommentsRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenFunctionNameAndOpeningParenthesis.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenFunctionNameAndOpeningParenthesis.kt index b4168bb5145..3b2ff308552 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenFunctionNameAndOpeningParenthesis.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/SpacingBetweenFunctionNameAndOpeningParenthesis.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.SpacingBetweenFunctionNameAndOpeningParenthesisRule +import com.pinterest.ktlint.ruleset.standard.rules.SpacingBetweenFunctionNameAndOpeningParenthesisRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -9,6 +10,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#spacing-between-function-name-and-opening-parenthesis) for * documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.22.0") class SpacingBetweenFunctionNameAndOpeningParenthesis(config: Config) : FormattingRule(config) { diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplate.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplate.kt index a0f339c8212..03772ba5113 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplate.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplate.kt @@ -1,6 +1,6 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.standard.StringTemplateRule +import com.pinterest.ktlint.ruleset.standard.rules.StringTemplateRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplateIndent.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplateIndent.kt new file mode 100644 index 00000000000..026fd905fe2 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/StringTemplateIndent.kt @@ -0,0 +1,29 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.StringTemplateIndentRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#string-template-indent) for documentation. + */ +@AutoCorrectable(since = "1.23.0") +class StringTemplateIndent(config: Config) : FormattingRule(config) { + + override val wrapping = StringTemplateIndentRule() + override val issue = + issueFor("Enforce consistent multiline string template indentation which are post-fixed with .trimIndent()") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.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 fb3063db450..51d5414089f 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,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty -import com.pinterest.ktlint.ruleset.standard.TrailingCommaOnCallSiteRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.ruleset.standard.rules.TrailingCommaOnCallSiteRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable 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 2a773c5f832..9c431f47f4f 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,7 +1,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.core.api.editorconfig.EditorConfigProperty -import com.pinterest.ktlint.ruleset.standard.TrailingCommaOnDeclarationSiteRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.ruleset.standard.rules.TrailingCommaOnDeclarationSiteRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.configWithAndroidVariants import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TryCatchFinallySpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TryCatchFinallySpacing.kt new file mode 100644 index 00000000000..1a71c09dbe4 --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TryCatchFinallySpacing.kt @@ -0,0 +1,29 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.TryCatchFinallySpacingRule +import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config +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/#try-catch-finally-spacing) for + * documentation. + */ +@AutoCorrectable(since = "1.23.0") +class TryCatchFinallySpacing(config: Config) : FormattingRule(config) { + + override val wrapping = TryCatchFinallySpacingRule() + override val issue = issueFor("Enforce consistent spacing in try-catch-finally blocks.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) +} diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeArgumentListSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeArgumentListSpacing.kt index 917b78d1bf9..00939815f28 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeArgumentListSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeArgumentListSpacing.kt @@ -1,8 +1,12 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.TypeArgumentListSpacingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.TypeArgumentListSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** @@ -14,4 +18,12 @@ class TypeArgumentListSpacing(config: Config) : FormattingRule(config) { override val wrapping = TypeArgumentListSpacingRule() override val issue = issueFor("Reports spaces in the type reference before a function.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeParameterListSpacing.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeParameterListSpacing.kt index fec09926104..d8a138e6bb9 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeParameterListSpacing.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/TypeParameterListSpacing.kt @@ -1,8 +1,12 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.TypeParameterListSpacingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.TypeParameterListSpacingRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.config import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable +import io.gitlab.arturbosch.detekt.api.internal.Configuration import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** @@ -14,4 +18,12 @@ class TypeParameterListSpacing(config: Config) : FormattingRule(config) { override val wrapping = TypeParameterListSpacingRule() override val issue = issueFor("Check spacing after a type parameter list in function and class declarations.") + + @Configuration("indentation size") + private val indentSize by config(4) + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + INDENT_SIZE_PROPERTY to indentSize.toString(), + ) } diff --git a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/UnnecessaryParenthesesBeforeTrailingLambda.kt b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/UnnecessaryParenthesesBeforeTrailingLambda.kt index 4c04133b785..ecb82f253e7 100644 --- a/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/UnnecessaryParenthesesBeforeTrailingLambda.kt +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/UnnecessaryParenthesesBeforeTrailingLambda.kt @@ -1,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.UnnecessaryParenthesesBeforeTrailingLambdaRule +import com.pinterest.ktlint.ruleset.standard.rules.UnnecessaryParenthesesBeforeTrailingLambdaRule import io.gitlab.arturbosch.detekt.api.Config +import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.formatting.FormattingRule @@ -9,6 +10,7 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule * See [ktlint docs](https://pinterest.github.io/ktlint/rules/experimental/#unnecessary-parenthesis-before-trailing-lambda) * for documentation. */ +@ActiveByDefault(since = "1.23.0") @AutoCorrectable(since = "1.20.0") class UnnecessaryParenthesesBeforeTrailingLambda(config: Config) : FormattingRule(config) { 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 9f2fbace7a5..983b4819ea0 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,10 +1,12 @@ 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.ruleset.standard.WrappingRule +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.EditorConfigProperty +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.INDENT_SIZE_PROPERTY +import com.pinterest.ktlint.rule.engine.core.api.editorconfig.MAX_LINE_LENGTH_PROPERTY +import com.pinterest.ktlint.ruleset.standard.rules.WrappingRule 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.ActiveByDefault import io.gitlab.arturbosch.detekt.api.internal.AutoCorrectable import io.gitlab.arturbosch.detekt.api.internal.Configuration @@ -23,8 +25,12 @@ class Wrapping(config: Config) : FormattingRule(config) { @Configuration("indentation size") private val indentSize by config(4) + @Configuration("maximum line length") + private val maxLineLength: Int by configWithAndroidVariants(120, 100) + 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/resources/config/config.yml b/detekt-formatting/src/main/resources/config/config.yml index a5ddff50e71..8d20ebf7cb0 100644 --- a/detekt-formatting/src/main/resources/config/config.yml +++ b/detekt-formatting/src/main/resources/config/config.yml @@ -5,6 +5,7 @@ formatting: AnnotationOnSeparateLine: active: true autoCorrect: true + indentSize: 4 AnnotationSpacing: active: true autoCorrect: true @@ -14,16 +15,17 @@ formatting: indentSize: 4 maxLineLength: 120 BlockCommentInitialStarAlignment: - active: false + active: true autoCorrect: true ChainWrapping: active: true autoCorrect: true + indentSize: 4 CommentSpacing: active: true autoCorrect: true CommentWrapping: - active: false + active: true autoCorrect: true indentSize: 4 ContextReceiverMapping: @@ -37,6 +39,10 @@ formatting: EnumEntryNameCase: active: true autoCorrect: true + EnumWrapping: + active: false + autoCorrect: true + indentSize: 4 Filename: active: true FinalNewline: @@ -44,11 +50,12 @@ formatting: autoCorrect: true insertFinalNewLine: true FunKeywordSpacing: - active: false + active: true autoCorrect: true FunctionReturnTypeSpacing: - active: false + active: true autoCorrect: true + maxLineLength: 120 FunctionSignature: active: false autoCorrect: true @@ -57,11 +64,19 @@ formatting: maxLineLength: 120 indentSize: 4 FunctionStartOfBodySpacing: - active: false + active: true autoCorrect: true FunctionTypeReferenceSpacing: + active: true + autoCorrect: true + IfElseBracing: + active: false + autoCorrect: true + indentSize: 4 + IfElseWrapping: active: false autoCorrect: true + indentSize: 4 ImportOrdering: active: true autoCorrect: true @@ -71,7 +86,7 @@ formatting: autoCorrect: true indentSize: 4 KdocWrapping: - active: false + active: true autoCorrect: true indentSize: 4 MaximumLineLength: @@ -79,7 +94,7 @@ formatting: maxLineLength: 120 ignoreBackTickedIdentifier: false ModifierListSpacing: - active: false + active: true autoCorrect: true ModifierOrdering: active: true @@ -87,18 +102,32 @@ formatting: MultiLineIfElse: active: true autoCorrect: true + indentSize: 4 + MultilineExpressionWrapping: + active: false + autoCorrect: true + indentSize: 4 NoBlankLineBeforeRbrace: active: true autoCorrect: true + NoBlankLineInList: + active: false + autoCorrect: true NoBlankLinesInChainedMethodCalls: active: true autoCorrect: true NoConsecutiveBlankLines: active: true autoCorrect: true + NoConsecutiveComments: + active: false NoEmptyClassBody: active: true autoCorrect: true + NoEmptyFirstLineInClassBody: + active: false + autoCorrect: true + indentSize: 4 NoEmptyFirstLineInMethodBlock: active: true autoCorrect: true @@ -127,7 +156,7 @@ formatting: active: true packagesToUseImportOnDemandProperty: 'java.util.*,kotlinx.android.synthetic.**' NullableTypeSpacing: - active: false + active: true autoCorrect: true PackageName: active: true @@ -139,6 +168,17 @@ formatting: active: true autoCorrect: true maxLineLength: 120 + indentSize: 4 + ParameterWrapping: + active: true + autoCorrect: true + indentSize: 4 + maxLineLength: 120 + PropertyWrapping: + active: true + autoCorrect: true + indentSize: 4 + maxLineLength: 120 SpacingAroundAngleBrackets: active: true autoCorrect: true @@ -179,11 +219,15 @@ formatting: active: true autoCorrect: true SpacingBetweenFunctionNameAndOpeningParenthesis: - active: false + active: true autoCorrect: true StringTemplate: active: true autoCorrect: true + StringTemplateIndent: + active: false + autoCorrect: true + indentSize: 4 TrailingCommaOnCallSite: active: false autoCorrect: true @@ -192,16 +236,23 @@ formatting: active: false autoCorrect: true useTrailingCommaOnDeclarationSite: true + TryCatchFinallySpacing: + active: false + autoCorrect: true + indentSize: 4 TypeArgumentListSpacing: active: false autoCorrect: true + indentSize: 4 TypeParameterListSpacing: active: false autoCorrect: true + indentSize: 4 UnnecessaryParenthesesBeforeTrailingLambda: - active: false + active: true autoCorrect: true Wrapping: active: true autoCorrect: true indentSize: 4 + maxLineLength: 120 diff --git a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/CommentWrappingSpec.kt b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/CommentWrappingSpec.kt index fc493b88b19..b3054a2be78 100644 --- a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/CommentWrappingSpec.kt +++ b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/CommentWrappingSpec.kt @@ -12,9 +12,9 @@ import org.junit.jupiter.api.Test */ class CommentWrappingSpec { @Test - fun `Given a single line block comment that start starts and end on a separate line then report no error`() { + fun `Given a single documentation comment that start starts and end on a separate line then report no error`() { val code = """ - /* Some comment */ + /** Some comment */ """.trimIndent() assertThat(CommentWrapping(Config.empty).lint(code)).isEmpty() } diff --git a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/RulesWhichCantBeCorrectedSpec.kt b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/RulesWhichCantBeCorrectedSpec.kt index c595c5176d1..8dfb465d473 100644 --- a/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/RulesWhichCantBeCorrectedSpec.kt +++ b/detekt-formatting/src/test/kotlin/io/gitlab/arturbosch/detekt/formatting/RulesWhichCantBeCorrectedSpec.kt @@ -2,7 +2,6 @@ package io.gitlab.arturbosch.detekt.formatting import io.gitlab.arturbosch.detekt.api.CodeSmell import io.gitlab.arturbosch.detekt.api.Config -import io.gitlab.arturbosch.detekt.formatting.wrappers.AnnotationOnSeparateLine import io.gitlab.arturbosch.detekt.formatting.wrappers.EnumEntryNameCase import io.gitlab.arturbosch.detekt.formatting.wrappers.Filename import io.gitlab.arturbosch.detekt.formatting.wrappers.ImportOrdering @@ -83,11 +82,4 @@ class RulesWhichCantBeCorrectedSpec { .isNotEmpty .hasExactlyElementsOfTypes(CodeSmell::class.java) } - - @Test - fun `Annotation contains a parameter on single line can't be corrected`() { - assertThat(AnnotationOnSeparateLine(Config.empty).lint("fun foo1() = @Suppress(\"DEPRECATION\") bar()")) - .isNotEmpty - .hasExactlyElementsOfTypes(CodeSmell::class.java) - } } diff --git a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/DetektPrinter.kt b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/DetektPrinter.kt index ed4fbdb9d4d..4c479e62d05 100644 --- a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/DetektPrinter.kt +++ b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/DetektPrinter.kt @@ -67,6 +67,6 @@ class DetektPrinter(private val arguments: GeneratorArgs) { toc: true folder: documentation --- - """.trimIndent() + """.trimIndent() } } diff --git a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/collection/RuleVisitor.kt b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/collection/RuleVisitor.kt index 85d69a8e1e1..36ad2856725 100644 --- a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/collection/RuleVisitor.kt +++ b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/collection/RuleVisitor.kt @@ -171,10 +171,10 @@ internal class RuleVisitor : DetektVisitor() { // which needs detekt-formatting.jar, // which needs :detekt-formatting:processResources task output, // which needs output of this class. - /*io.gitlab.arturbosch.detekt.api.Rule*/ "Rule", - /*io.gitlab.arturbosch.detekt.formatting.FormattingRule*/ "FormattingRule", - /*io.gitlab.arturbosch.detekt.api.ThresholdRule*/ "ThresholdRule", - /*io.gitlab.arturbosch.detekt.rules.empty.EmptyRule*/ "EmptyRule", + "Rule", // io.gitlab.arturbosch.detekt.api.Rule + "FormattingRule", // io.gitlab.arturbosch.detekt.formatting.FormattingRule + "ThresholdRule", // io.gitlab.arturbosch.detekt.api.ThresholdRule + "EmptyRule", // io.gitlab.arturbosch.detekt.rules.empty.EmptyRule ) private const val ISSUE_ARGUMENT_SIZE = 4 diff --git a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/defaultconfig/ConfigPrinter.kt b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/defaultconfig/ConfigPrinter.kt index 7e5580bd22f..b2585f42850 100644 --- a/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/defaultconfig/ConfigPrinter.kt +++ b/detekt-generator/src/main/kotlin/io/gitlab/arturbosch/detekt/generator/printer/defaultconfig/ConfigPrinter.kt @@ -40,7 +40,7 @@ object ConfigPrinter : DocumentationPrinter> { # LongParameterList: 1 # style: 1 # comments: 1 - """.trimIndent() + """.trimIndent() private fun defaultConfigConfiguration(): String = """ config: @@ -49,7 +49,7 @@ object ConfigPrinter : DocumentationPrinter> { checkExhaustiveness: false # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]' excludes: '' - """.trimIndent() + """.trimIndent() private fun defaultProcessorsConfiguration(): String = """ processors: @@ -68,7 +68,7 @@ object ConfigPrinter : DocumentationPrinter> { # - 'ProjectLOCProcessor' # - 'ProjectSLOCProcessor' # - 'LicenseHeaderLoaderExtension' - """.trimIndent() + """.trimIndent() private fun defaultConsoleReportsConfiguration(): String = """ console-reports: @@ -80,7 +80,7 @@ object ConfigPrinter : DocumentationPrinter> { - 'FindingsReport' - 'FileBasedFindingsReport' # - 'LiteFindingsReport' - """.trimIndent() + """.trimIndent() private fun defaultOutputReportsConfiguration(): String = """ output-reports: @@ -91,5 +91,5 @@ object ConfigPrinter : DocumentationPrinter> { # - 'HtmlOutputReport' # - 'MdOutputReport' # - 'SarifOutputReport' - """.trimIndent() + """.trimIndent() } diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt index 7d888885bcf..11edd5251bc 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt @@ -51,7 +51,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -127,7 +127,7 @@ class DetektAndroidSpec { } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { it.writeProjectFile("gradle.properties", "detekt.android.disabled=true") - it.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -177,7 +177,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -271,7 +271,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("android_lib/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("android_lib/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -338,7 +338,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -393,7 +393,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -450,7 +450,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -507,7 +507,7 @@ class DetektAndroidSpec { ) } val gradleRunner = createGradleRunnerAndSetupProject(projectLayout).also { - it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent) } @Test @@ -561,7 +561,7 @@ class DetektAndroidSpec { val gradleRunner = createGradleRunnerAndSetupProject(projectLayout, dryRun = false).also { it.projectFile("app/src/main/java").mkdirs() it.projectFile("app/src/main/res/layout").mkdirs() - it.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent()) + it.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent) it.writeProjectFile("app/src/main/res/layout/activity_sample.xml", SAMPLE_ACTIVITY_LAYOUT) it.writeProjectFile("app/src/main/java/SampleActivity.kt", SAMPLE_ACTIVITY_USING_VIEW_BINDING) } @@ -593,7 +593,7 @@ internal fun isAndroidSdkInstalled() = System.getenv("ANDROID_SDK_ROOT") != null || System.getenv("ANDROID_HOME") != null @Language("xml") -internal fun manifestContent() = """ +internal val manifestContent = """ """.trimIndent() diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektMultiplatformSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektMultiplatformSpec.kt index 3d28f069f5e..cf18493268e 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektMultiplatformSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektMultiplatformSpec.kt @@ -362,9 +362,9 @@ private fun setupProject(projectLayoutAction: ProjectLayout.() -> Unit): DslGrad private fun setupAndroidProject(projectLayoutAction: ProjectLayout.() -> Unit): DslGradleRunner { val gradleRunner = setupProject { projectLayoutAction() } - gradleRunner.writeProjectFile("shared/src/androidMain/AndroidManifest.xml", manifestContent()) - gradleRunner.writeProjectFile("shared/src/debug/AndroidManifest.xml", manifestContent()) - gradleRunner.writeProjectFile("shared/src/release/AndroidManifest.xml", manifestContent()) + gradleRunner.writeProjectFile("shared/src/androidMain/AndroidManifest.xml", manifestContent) + gradleRunner.writeProjectFile("shared/src/debug/AndroidManifest.xml", manifestContent) + gradleRunner.writeProjectFile("shared/src/release/AndroidManifest.xml", manifestContent) return gradleRunner } diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/report/ReportMergeSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/report/ReportMergeSpec.kt index 97b7bbe7760..c7c0c7bb1ab 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/report/ReportMergeSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/report/ReportMergeSpec.kt @@ -193,8 +193,8 @@ class ReportMergeSpec { ) gradleRunner.setupProject() - gradleRunner.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent()) - gradleRunner.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent()) + gradleRunner.writeProjectFile("app/src/main/AndroidManifest.xml", manifestContent) + gradleRunner.writeProjectFile("lib/src/main/AndroidManifest.xml", manifestContent) gradleRunner.runTasksAndCheckResult("detektMain", "reportMerge", "--continue") { result -> projectLayout.submodules.forEach { submodule -> assertThat(result.task(":${submodule.name}:detektMain")?.outcome).isEqualTo(TaskOutcome.SUCCESS) diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/ClassLoaderCache.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/ClassLoaderCache.kt index 7f54e005bdf..5dd65fafa6f 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/ClassLoaderCache.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/ClassLoaderCache.kt @@ -19,7 +19,7 @@ internal class DefaultClassLoaderCache : ClassLoaderCache { return classpathFilesHashWithLoaders.getOrPut(classpathHashCode) { URLClassLoader( classpathFiles.map { it.toURI().toURL() }.toTypedArray(), - null /* isolate detekt environment */ + null // isolate detekt environment ) } } diff --git a/detekt-gradle-plugin/src/testFixtures/kotlin/io/gitlab/arturbosch/detekt/testkit/DslGradleRunner.kt b/detekt-gradle-plugin/src/testFixtures/kotlin/io/gitlab/arturbosch/detekt/testkit/DslGradleRunner.kt index 7c5ee72449c..29693b36258 100644 --- a/detekt-gradle-plugin/src/testFixtures/kotlin/io/gitlab/arturbosch/detekt/testkit/DslGradleRunner.kt +++ b/detekt-gradle-plugin/src/testFixtures/kotlin/io/gitlab/arturbosch/detekt/testkit/DslGradleRunner.kt @@ -1,3 +1,5 @@ +@file:Suppress("Indentation") // https://github.com/pinterest/ktlint/issues/1971 + package io.gitlab.arturbosch.detekt.testkit import org.gradle.api.Project @@ -10,7 +12,8 @@ import java.nio.file.Files import java.util.UUID @Suppress("TooManyFunctions", "ClassOrdering") -class DslGradleRunner @Suppress("LongParameterList") +class DslGradleRunner +@Suppress("LongParameterList") constructor( val projectLayout: ProjectLayout, val buildFileName: String, @@ -60,7 +63,7 @@ constructor( val smellyConstant: Int = ${if (withCodeSmell) "11" else "0"} } - """.trimIndent() // Last line to prevent NewLineAtEndOfFile. + """.trimIndent() // Last line to prevent NewLineAtEndOfFile. fun setupProject() { writeProjectFile(buildFileName, mainBuildFileContent) diff --git a/detekt-report-sarif/src/test/kotlin/io/github/detekt/report/sarif/SarifOutputReportSpec.kt b/detekt-report-sarif/src/test/kotlin/io/github/detekt/report/sarif/SarifOutputReportSpec.kt index a9bf0822855..d7e3a3e0cc9 100644 --- a/detekt-report-sarif/src/test/kotlin/io/github/detekt/report/sarif/SarifOutputReportSpec.kt +++ b/detekt-report-sarif/src/test/kotlin/io/github/detekt/report/sarif/SarifOutputReportSpec.kt @@ -172,7 +172,7 @@ private fun constrainRegion(startLine: Int, startColumn: Int, endLine: Int, endC "startColumn": $startColumn, "startLine": $startLine } -""".trimIndent() + """.trimIndent() class TestRule : Rule() { override val issue = Issue(javaClass.simpleName, Severity.Warning, "", Debt.FIVE_MINS) diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MaxLineLength.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MaxLineLength.kt index 2399288b946..8a51b8f4940 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MaxLineLength.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/MaxLineLength.kt @@ -78,7 +78,7 @@ class MaxLineLength(config: Config = Config.empty) : Rule(config) { report(CodeSmell(issue, Entity.from(ktElement, location), issue.description)) } - offset += 1 /* '\n' */ + offset += 1 // '\n' } } diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/TrailingWhitespace.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/TrailingWhitespace.kt index c642e576ca8..383b51f5106 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/TrailingWhitespace.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/TrailingWhitespace.kt @@ -47,7 +47,7 @@ class TrailingWhitespace(config: Config = Config.empty) : Rule(config) { report(CodeSmell(issue, entity, createMessage(index))) } } - offset += 1 /* '\n' */ + offset += 1 // '\n' } } diff --git a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumberSpec.kt b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumberSpec.kt index 5bb8fa3eab5..e53d2a5f2d4 100644 --- a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumberSpec.kt +++ b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/MagicNumberSpec.kt @@ -629,7 +629,7 @@ class MagicNumberSpec { ) var model = Model(someVal = $numberString) - """.trimIndent() + """.trimIndent() @Test fun `should not ignore int`() { @@ -693,7 +693,7 @@ class MagicNumberSpec { ) var model = Model($numberString) - """.trimIndent() + """.trimIndent() @Test fun `should detect the argument by default`() { @@ -707,7 +707,7 @@ class MagicNumberSpec { fun tested(someVal: Int, other: String = "default") val t = tested(someVal = $number) - """.trimIndent() + """.trimIndent() @Test fun `should ignore int by default`() { diff --git a/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/FindingsAssertions.kt b/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/FindingsAssertions.kt index cd69600c8be..f76c99914a8 100644 --- a/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/FindingsAssertions.kt +++ b/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/FindingsAssertions.kt @@ -17,8 +17,7 @@ fun assertThat(finding: Finding) = FindingAssert(finding) fun List.assert() = FindingsAssert(this) class FindingsAssert(actual: List) : - AbstractListAssert, - Finding, FindingAssert>(actual, FindingsAssert::class.java) { + AbstractListAssert, Finding, FindingAssert>(actual, FindingsAssert::class.java) { override fun newAbstractIterableAssert(iterable: MutableIterable): FindingsAssert { throw UnsupportedOperationException("not implemented") diff --git a/detekt-tooling/src/main/kotlin/io/github/detekt/tooling/api/DetektProvider.kt b/detekt-tooling/src/main/kotlin/io/github/detekt/tooling/api/DetektProvider.kt index 3100b9a8b50..acb1906fff3 100644 --- a/detekt-tooling/src/main/kotlin/io/github/detekt/tooling/api/DetektProvider.kt +++ b/detekt-tooling/src/main/kotlin/io/github/detekt/tooling/api/DetektProvider.kt @@ -30,6 +30,6 @@ interface DetektProvider { ): DetektProvider = ServiceLoader.load(DetektProvider::class.java, classLoader) .maxByOrNull { it.priority } - ?: error("No implemention of DetektProvider found.") + ?: error("No implementation of DetektProvider found.") } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 945434368f8..c8e44254bb0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ dokka = "1.8.10" jacoco = "0.8.9" kotlin = "1.8.20" -ktlint = "0.48.2" +ktlint = "0.49.0" junit = "5.9.2" contester = "0.2.0" @@ -30,9 +30,7 @@ android-gradle-minSupported = "com.android.tools.build:gradle:7.0.0" # Gradle plugin remains compatible. android-gradle-maxSupported = "com.android.tools.build:gradle:8.0.0" -ktlint-core = { module = "com.pinterest.ktlint:ktlint-core", version.ref = "ktlint" } -ktlint-rulesetStandard = { module = "com.pinterest.ktlint:ktlint-ruleset-standard", version.ref = "ktlint" } -ktlint-rulesetExperimental = { module = "com.pinterest.ktlint:ktlint-ruleset-experimental", version.ref = "ktlint" } +ktlintRulesetStandard = { module = "com.pinterest.ktlint:ktlint-ruleset-standard", version.ref = "ktlint" } slf4j-nop = { module = "org.slf4j:slf4j-nop", version = "1.7.36" } slf4j-simple = { module = "org.slf4j:slf4j-simple", version = "1.7.36" }