Skip to content

Commit

Permalink
Update ktlint to v0.49.0 (#6028)
Browse files Browse the repository at this point in the history
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • Loading branch information
3flex and renovate[bot] committed Apr 23, 2023
1 parent b224dcb commit b54e5c8
Show file tree
Hide file tree
Showing 100 changed files with 655 additions and 194 deletions.
10 changes: 0 additions & 10 deletions config/detekt/detekt.yml
Expand Up @@ -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

Expand Down Expand Up @@ -218,8 +210,6 @@ style:
active: true
excludes: ['**/test/**', '**/*Test.kt', '**/*Spec.kt']
excludeCommentStatements: true
MultilineRawStringIndentation:
active: true
NestedClassesVisibility:
active: true
ObjectLiteralToLambda:
Expand Down
Expand Up @@ -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<String,Any>!" +
throwable?.let { "\n" + it.message }.orEmpty(),
Expand Down
Expand Up @@ -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. " +
Expand Down
1 change: 0 additions & 1 deletion detekt-core/src/main/resources/deprecation.properties
Expand Up @@ -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
Expand Down
Expand Up @@ -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()
}
Expand Down
Expand Up @@ -18,7 +18,7 @@ class FunctionSuppressorSpec {
@Test
fun `Factory returns null if ignoreFunction is not set`() {
val suppressor = functionSuppressorFactory(
buildConfigAware(/* empty */),
buildConfigAware(),
BindingContext.EMPTY,
)

Expand Down
8 changes: 1 addition & 7 deletions detekt-formatting/build.gradle.kts
Expand Up @@ -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")
}

Expand Down
@@ -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
Expand All @@ -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?
Expand Down Expand Up @@ -54,15 +55,19 @@ abstract class FormattingRule(config: Config) : Rule(config) {

open fun overrideEditorConfigProperties(): Map<EditorConfigProperty<*>, 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,
Expand All @@ -74,6 +79,8 @@ abstract class FormattingRule(config: Config) : Rule(config) {
)
}
}

return EditorConfig(properties)
}

private fun emitFinding(message: String, canBeAutoCorrected: Boolean, node: ASTNode) {
Expand Down
Expand Up @@ -12,24 +12,31 @@ 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
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
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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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),
Expand All @@ -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),
Expand All @@ -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) {
Expand Down
@@ -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

/**
Expand All @@ -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<EditorConfigProperty<*>, String> =
mapOf(
INDENT_SIZE_PROPERTY to indentSize.toString(),
)
}
@@ -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
Expand Down
@@ -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
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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) {

Expand Down
@@ -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

/**
Expand All @@ -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<EditorConfigProperty<*>, String> =
mapOf(
INDENT_SIZE_PROPERTY to indentSize.toString(),
)
}
@@ -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
Expand Down
@@ -1,17 +1,19 @@
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

/**
* 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) {

Expand Down

0 comments on commit b54e5c8

Please sign in to comment.