diff --git a/code-coverage-report/build.gradle.kts b/code-coverage-report/build.gradle.kts index 74bfd601844..7277b577397 100644 --- a/code-coverage-report/build.gradle.kts +++ b/code-coverage-report/build.gradle.kts @@ -51,7 +51,8 @@ tasks.check { configurations.allCodeCoverageReportClassDirectories.get().attributes { attributes.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class, Category.LIBRARY)) attributes.attribute( - LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements::class, LibraryElements.CLASSES) + LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, + objects.named(LibraryElements::class, LibraryElements.CLASSES) ) } diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index 399eee6b89d..707987eee3f 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -73,6 +73,8 @@ formatting: active: true EnumEntryNameCase: active: true + Filename: + active: false MaximumLineLength: active: false MultiLineIfElse: diff --git a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Location.kt b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Location.kt index 5f7fccd6186..530d8a18849 100644 --- a/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Location.kt +++ b/detekt-api/src/main/kotlin/io/gitlab/arturbosch/detekt/api/Location.kt @@ -14,7 +14,10 @@ import java.nio.file.Paths /** * Specifies a position within a source code fragment. */ -data class Location @Deprecated("Consider relative path by passing a [FilePath]") @JvmOverloads constructor( +data class Location +@Deprecated("Consider relative path by passing a [FilePath]") +@JvmOverloads +constructor( val source: SourceLocation, val text: TextLocation, @Deprecated( diff --git a/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/AnnotationExcluderSpec.kt b/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/AnnotationExcluderSpec.kt index 6da78a438ad..c0abcf85551 100644 --- a/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/AnnotationExcluderSpec.kt +++ b/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/AnnotationExcluderSpec.kt @@ -27,7 +27,9 @@ class AnnotationExcluderSpec(private val env: KotlinCoreEnvironment) { """.trimIndent() ) - @ParameterizedTest(name = "Given {0} is excluded when the {1} is found then the excluder returns {2} without type solving") + @ParameterizedTest( + name = "Given {0} is excluded when the {1} is found then the excluder returns {2} without type solving" + ) @CsvFileSource(resources = ["/annotation_excluder.csv"]) fun `all cases`(exclusion: String, annotation: String, shouldExclude: Boolean) { val (file, ktAnnotation) = createKtFile(annotation) @@ -36,7 +38,9 @@ class AnnotationExcluderSpec(private val env: KotlinCoreEnvironment) { assertThat(excluder.shouldExclude(listOf(ktAnnotation))).isEqualTo(shouldExclude) } - @ParameterizedTest(name = "Given {0} is excluded when the {1} is found then the excluder returns {2} with type solving") + @ParameterizedTest( + name = "Given {0} is excluded when the {1} is found then the excluder returns {2} with type solving" + ) @CsvFileSource(resources = ["/annotation_excluder.csv"]) fun `all cases - Type Solving`(exclusion: String, annotation: String, shouldExclude: Boolean) { val (file, ktAnnotation) = createKtFile(annotation) diff --git a/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/internal/PathMatchersSpec.kt b/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/internal/PathMatchersSpec.kt index 4ecd997ded5..173a02776d2 100644 --- a/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/internal/PathMatchersSpec.kt +++ b/detekt-api/src/test/kotlin/io/gitlab/arturbosch/detekt/api/internal/PathMatchersSpec.kt @@ -41,7 +41,9 @@ class PathMatchersSpec { fun `should work as a regex path matcher when syntax not specified`() { assertThatThrownBy { pathMatcher("regex:.*/detekt/api/.*") } .isInstanceOf(IllegalArgumentException::class.java) - .hasMessage("Only globbing patterns are supported as they are treated os-independently by the PathMatcher api.") + .hasMessage( + "Only globbing patterns are supported as they are treated os-independently by the PathMatcher api." + ) } } } diff --git a/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/config/YamlConfigSpec.kt b/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/config/YamlConfigSpec.kt index 8c45bc8c762..b010d479e5e 100644 --- a/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/config/YamlConfigSpec.kt +++ b/detekt-core/src/test/kotlin/io/gitlab/arturbosch/detekt/core/config/YamlConfigSpec.kt @@ -57,7 +57,9 @@ class YamlConfigSpec { @Suppress("UNUSED_VARIABLE") val ignored = config.valueOrDefault("style", "") } - .withMessage("Value \"{WildcardImport={active=true}, NoElseInWhenExpression={active=true}, MagicNumber={active=true, ignoreNumbers=[-1, 0, 1, 2]}}\" set for config parameter \"style\" is not of required type String.") + .withMessage( + "Value \"{WildcardImport={active=true}, NoElseInWhenExpression={active=true}, MagicNumber={active=true, ignoreNumbers=[-1, 0, 1, 2]}}\" set for config parameter \"style\" is not of required type String." + ) } } @@ -94,7 +96,9 @@ class YamlConfigSpec { .subConfig("Rule") .valueOrDefault("threshold", 6) } - .withMessage("Value \"v5.7\" set for config parameter \"RuleSet > Rule > threshold\" is not of required type Int.") + .withMessage( + "Value \"v5.7\" set for config parameter \"RuleSet > Rule > threshold\" is not of required type Int." + ) } @Test @@ -105,7 +109,9 @@ class YamlConfigSpec { .subConfig("Rule") .valueOrDefault("active", 1) } - .withMessage("Value \"[]\" set for config parameter \"RuleSet > Rule > active\" is not of required type Int.") + .withMessage( + "Value \"[]\" set for config parameter \"RuleSet > Rule > active\" is not of required type Int." + ) } } 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 b01b80a9682..defc385ea1e 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 @@ -3,7 +3,7 @@ package io.gitlab.arturbosch.detekt.formatting import com.pinterest.ktlint.core.KtLint import com.pinterest.ktlint.core.Rule.VisitorModifier.RunAsLateAsPossible import com.pinterest.ktlint.core.Rule.VisitorModifier.RunOnRootNodeOnly -import com.pinterest.ktlint.core.api.FeatureInAlphaState +import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties.codeStyleSetProperty import com.pinterest.ktlint.core.api.UsesEditorConfigProperties import io.github.detekt.psi.fileName import io.github.detekt.psi.toFilePath @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset /** * Rule to detect formatting violations. */ -@OptIn(FeatureInAlphaState::class) abstract class FormattingRule(config: Config) : Rule(config) { abstract val wrapping: com.pinterest.ktlint.core.Rule @@ -53,15 +52,20 @@ abstract class FormattingRule(config: Config) : Rule(config) { override fun visit(root: KtFile) { this.root = root - root.node.putUserData(KtLint.ANDROID_USER_DATA_KEY, isAndroid) positionByOffset = KtLintLineColCalculator .calculateLineColByOffset(KtLintLineColCalculator.normalizeText(root.text)) - val editorConfigProperties = overrideEditorConfigProperties() + val editorConfigProperties = overrideEditorConfigProperties()?.toMutableMap() + ?: mutableMapOf() - if (!editorConfigProperties.isNullOrEmpty()) { + if (isAndroid) { + editorConfigProperties[codeStyleSetProperty] = "android" + } + + if (editorConfigProperties.isNotEmpty()) { val userData = (root.node.getUserData(KtLint.EDITOR_CONFIG_PROPERTIES_USER_DATA_KEY).orEmpty()) .toMutableMap() + editorConfigProperties.forEach { (editorConfigProperty, defaultValue) -> userData[editorConfigProperty.type.name] = Property.builder() .name(editorConfigProperty.type.name) @@ -81,18 +85,6 @@ abstract class FormattingRule(config: Config) : Rule(config) { return } - // KtLint 0.44.0 is assuming that KtLint.EDITOR_CONFIG_USER_DATA_KEY is available on all the nodes. - // If not, it crashes with a NPE. Here we're patching their behavior. - // This block is deprecated and will be removed in KtLint 0.46. But we have to suppress the - // deprecation warning because the ci runs with -Werror. - @Suppress("DEPRECATION") - if (node.getUserData(KtLint.EDITOR_CONFIG_USER_DATA_KEY) == null) { - node.putUserData( - KtLint.EDITOR_CONFIG_USER_DATA_KEY, - com.pinterest.ktlint.core.EditorConfig.Companion.fromMap(emptyMap()) - ) - } - wrapping.visit(node, autoCorrect) { offset, message, _ -> val (line, column) = positionByOffset(offset) val location = Location( 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 96fdaaa64e8..2b7844d5091 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 @@ -24,6 +24,7 @@ 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.NoBlankLineBeforeRbrace +import io.gitlab.arturbosch.detekt.formatting.wrappers.NoBlankLinesInChainedMethodCalls import io.gitlab.arturbosch.detekt.formatting.wrappers.NoConsecutiveBlankLines import io.gitlab.arturbosch.detekt.formatting.wrappers.NoEmptyClassBody import io.gitlab.arturbosch.detekt.formatting.wrappers.NoEmptyFirstLineInMethodBlock @@ -77,6 +78,7 @@ class KtLintMultiRule(config: Config = Config.empty) : MultiRule() { MaximumLineLength(config), ModifierOrdering(config), NoBlankLineBeforeRbrace(config), + NoBlankLinesInChainedMethodCalls(config), NoConsecutiveBlankLines(config), NoEmptyClassBody(config), NoLineBreakAfterElse(config), 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 718841f2e5c..72043b1d4d1 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.AnnotationRule +import com.pinterest.ktlint.ruleset.standard.AnnotationRule 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-website](https://ktlint.github.io) for documentation. */ @AutoCorrectable(since = "1.0.0") +@ActiveByDefault(since = "1.22.0") class AnnotationOnSeparateLine(config: Config) : FormattingRule(config) { override val wrapping = AnnotationRule() 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 5f4b4c83c7e..b75eb7a4a43 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.AnnotationSpacingRule +import com.pinterest.ktlint.ruleset.standard.AnnotationSpacingRule 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-website](https://ktlint.github.io) for documentation. */ @AutoCorrectable(since = "1.0.0") +@ActiveByDefault(since = "1.22.0") class AnnotationSpacing(config: Config) : FormattingRule(config) { override val wrapping = AnnotationSpacingRule() 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 2b8de2cdc5b..fccfd735dd8 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,12 +1,12 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties -import com.pinterest.ktlint.core.api.FeatureInAlphaState import com.pinterest.ktlint.core.api.UsesEditorConfigProperties -import com.pinterest.ktlint.ruleset.experimental.ArgumentListWrappingRule +import com.pinterest.ktlint.ruleset.standard.ArgumentListWrappingRule 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 @@ -14,8 +14,8 @@ import io.gitlab.arturbosch.detekt.formatting.FormattingRule /** * See [ktlint-website](https://ktlint.github.io) for documentation. */ -@OptIn(FeatureInAlphaState::class) @AutoCorrectable(since = "1.0.0") +@ActiveByDefault(since = "1.22.0") class ArgumentListWrapping(config: Config) : FormattingRule(config) { override val wrapping = ArgumentListWrappingRule() 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 ef2663dd407..509abfdce60 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.EnumEntryNameCaseRule +import com.pinterest.ktlint.ruleset.standard.EnumEntryNameCaseRule 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-website](https://ktlint.github.io) for documentation. */ @AutoCorrectable(since = "1.4.0") +@ActiveByDefault(since = "1.22.0") class EnumEntryNameCase(config: Config) : FormattingRule(config) { override val wrapping = EnumEntryNameCaseRule() 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 4d42ee056ca..29fee99e673 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.MultiLineIfElseRule +import com.pinterest.ktlint.ruleset.standard.MultiLineIfElseRule 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-website](https://ktlint.github.io#rule-modifier-order) for documentation. */ @AutoCorrectable(since = "1.0.0") +@ActiveByDefault(since = "1.22.0") class MultiLineIfElse(config: Config) : FormattingRule(config) { override val wrapping = MultiLineIfElseRule() 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 new file mode 100644 index 00000000000..dfc35b0cc4e --- /dev/null +++ b/detekt-formatting/src/main/kotlin/io/gitlab/arturbosch/detekt/formatting/wrappers/NoBlankLinesInChainedMethodCalls.kt @@ -0,0 +1,18 @@ +package io.gitlab.arturbosch.detekt.formatting.wrappers + +import com.pinterest.ktlint.ruleset.standard.NoBlankLinesInChainedMethodCallsRule +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-website](https://ktlint.github.io) for documentation. + */ +@ActiveByDefault(since = "1.22.0") +@AutoCorrectable(since = "1.22.0") +class NoBlankLinesInChainedMethodCalls(config: Config) : FormattingRule(config) { + + override val wrapping = NoBlankLinesInChainedMethodCallsRule() + override val issue = issueFor("Detects blank lines in chained method rules.") +} 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 8ee87a60592..3497a2259f6 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.NoEmptyFirstLineInMethodBlockRule +import com.pinterest.ktlint.ruleset.standard.NoEmptyFirstLineInMethodBlockRule 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-website](https://ktlint.github.io) for documentation. */ @AutoCorrectable(since = "1.4.0") +@ActiveByDefault(since = "1.22.0") class NoEmptyFirstLineInMethodBlock(config: Config) : FormattingRule(config) { override val wrapping = NoEmptyFirstLineInMethodBlockRule() 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 af7154774eb..83fbf538703 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.PackageNameRule +import com.pinterest.ktlint.ruleset.standard.PackageNameRule 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-website](https://ktlint.github.io) for documentation. */ @AutoCorrectable(since = "1.0.0") +@ActiveByDefault(since = "1.22.0") class PackageName(config: Config) : FormattingRule(config) { override val wrapping = PackageNameRule() 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 613cc263f42..29a35abbf96 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.SpacingAroundAngleBracketsRule +import com.pinterest.ktlint.ruleset.standard.SpacingAroundAngleBracketsRule 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-website](https://ktlint.github.io#rule-spacing) for documentation. */ @AutoCorrectable(since = "1.16.0") +@ActiveByDefault(since = "1.22.0") class SpacingAroundAngleBrackets(config: Config) : FormattingRule(config) { override val wrapping = SpacingAroundAngleBracketsRule() 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 26116a40e9a..dcde5ca5466 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.SpacingAroundDoubleColonRule +import com.pinterest.ktlint.ruleset.standard.SpacingAroundDoubleColonRule 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-website](https://ktlint.github.io#rule-spacing) for documentation. */ @AutoCorrectable(since = "1.10.0") +@ActiveByDefault(since = "1.22.0") class SpacingAroundDoubleColon(config: Config) : FormattingRule(config) { override val wrapping = SpacingAroundDoubleColonRule() 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 4adaedef062..770f50c7733 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.SpacingAroundUnaryOperatorRule +import com.pinterest.ktlint.ruleset.standard.SpacingAroundUnaryOperatorRule 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-website](https://ktlint.github.io#rule-spacing) for documentation. */ @AutoCorrectable(since = "1.16.0") +@ActiveByDefault(since = "1.22.0") class SpacingAroundUnaryOperator(config: Config) : FormattingRule(config) { override val wrapping = SpacingAroundUnaryOperatorRule() 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 92b66a943cb..bb3e998badb 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.SpacingBetweenDeclarationsWithAnnotationsRule +import com.pinterest.ktlint.ruleset.standard.SpacingBetweenDeclarationsWithAnnotationsRule 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-website](https://ktlint.github.io#rule-spacing) for documentation. */ @AutoCorrectable(since = "1.10.0") +@ActiveByDefault(since = "1.22.0") class SpacingBetweenDeclarationsWithAnnotations(config: Config) : FormattingRule(config) { override val wrapping = SpacingBetweenDeclarationsWithAnnotationsRule() 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 3b15666b7b5..8845f44b0fa 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,7 +1,8 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers -import com.pinterest.ktlint.ruleset.experimental.SpacingBetweenDeclarationsWithCommentsRule +import com.pinterest.ktlint.ruleset.standard.SpacingBetweenDeclarationsWithCommentsRule 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-website](https://ktlint.github.io#rule-spacing) for documentation. */ @AutoCorrectable(since = "1.10.0") +@ActiveByDefault(since = "1.22.0") class SpacingBetweenDeclarationsWithComments(config: Config) : FormattingRule(config) { override val wrapping = SpacingBetweenDeclarationsWithCommentsRule() 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 ed79bf053be..eb4a896574d 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,14 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers +import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties +import com.pinterest.ktlint.core.api.UsesEditorConfigProperties import com.pinterest.ktlint.ruleset.standard.WrappingRule import io.gitlab.arturbosch.detekt.api.Config import io.gitlab.arturbosch.detekt.api.TextLocation +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 import org.jetbrains.kotlin.com.intellij.lang.ASTNode @@ -18,6 +22,9 @@ class Wrapping(config: Config) : FormattingRule(config) { override val wrapping = WrappingRule() override val issue = issueFor("Reports missing newlines (e.g. between parentheses of a multi-line function call") + @Configuration("indentation size") + private val indentSize by config(4) + /** * [Wrapping] has visitor modifier RunOnRootNodeOnly, so [node] is always the root file. * Override the parent implementation to highlight the entire file. @@ -26,4 +33,9 @@ class Wrapping(config: Config) : FormattingRule(config) { // Use offset + 1 since Wrapping always reports the location of missing new line. return TextLocation(offset, offset + 1) } + + override fun overrideEditorConfigProperties(): Map, String> = + mapOf( + DefaultEditorConfigProperties.indentSizeProperty to indentSize.toString(), + ) } diff --git a/detekt-formatting/src/main/resources/config/config.yml b/detekt-formatting/src/main/resources/config/config.yml index 739a22e28ce..8a620c0ecdf 100644 --- a/detekt-formatting/src/main/resources/config/config.yml +++ b/detekt-formatting/src/main/resources/config/config.yml @@ -3,13 +3,13 @@ formatting: android: false autoCorrect: true AnnotationOnSeparateLine: - active: false + active: true autoCorrect: true AnnotationSpacing: - active: false + active: true autoCorrect: true ArgumentListWrapping: - active: false + active: true autoCorrect: true indentSize: 4 maxLineLength: 120 @@ -30,7 +30,7 @@ formatting: active: false autoCorrect: true EnumEntryNameCase: - active: false + active: true autoCorrect: true Filename: active: true @@ -67,11 +67,14 @@ formatting: active: true autoCorrect: true MultiLineIfElse: - active: false + active: true autoCorrect: true NoBlankLineBeforeRbrace: active: true autoCorrect: true + NoBlankLinesInChainedMethodCalls: + active: true + autoCorrect: true NoConsecutiveBlankLines: active: true autoCorrect: true @@ -79,7 +82,7 @@ formatting: active: true autoCorrect: true NoEmptyFirstLineInMethodBlock: - active: false + active: true autoCorrect: true NoLineBreakAfterElse: active: true @@ -106,14 +109,14 @@ formatting: active: true packagesToUseImportOnDemandProperty: 'java.util.*,kotlinx.android.synthetic.**' PackageName: - active: false + active: true autoCorrect: true ParameterListWrapping: active: true autoCorrect: true maxLineLength: 120 SpacingAroundAngleBrackets: - active: false + active: true autoCorrect: true SpacingAroundColon: active: true @@ -128,7 +131,7 @@ formatting: active: true autoCorrect: true SpacingAroundDoubleColon: - active: false + active: true autoCorrect: true SpacingAroundKeyword: active: true @@ -143,13 +146,13 @@ formatting: active: true autoCorrect: true SpacingAroundUnaryOperator: - active: false + active: true autoCorrect: true SpacingBetweenDeclarationsWithAnnotations: - active: false + active: true autoCorrect: true SpacingBetweenDeclarationsWithComments: - active: false + active: true autoCorrect: true StringTemplate: active: true @@ -168,3 +171,4 @@ formatting: Wrapping: active: true autoCorrect: true + indentSize: 4 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 5756abeb49a..b7cffbb1f08 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 @@ -78,13 +78,23 @@ class DetektAndroidSpec { @DisplayName("task :app:detektTest") fun appDetektTest() { gradleRunner.runTasksAndCheckResult(":app:detektTest") { buildResult -> - assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-releaseUnitTest.xml """) - assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debugUnitTest.xml """) - assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debugAndroidTest.xml """) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-releaseUnitTest.xml """ + ) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-debugUnitTest.xml """ + ) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-debugAndroidTest.xml """ + ) assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]test[/\\]java""") - assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]androidTest[/\\]java""") + assertThat(buildResult.output).containsPattern( + """--input \S*[/\\]app[/\\]src[/\\]androidTest[/\\]java""" + ) assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]test[/\\]kotlin""") - assertThat(buildResult.output).containsPattern("""--input \S*[/\\]app[/\\]src[/\\]androidTest[/\\]kotlin""") + assertThat(buildResult.output).containsPattern( + """--input \S*[/\\]app[/\\]src[/\\]androidTest[/\\]kotlin""" + ) assertThat(buildResult.output).contains("--report xml:") assertThat(buildResult.output).contains("--report sarif:") assertThat(buildResult.output).doesNotContain("--report txt:") @@ -190,9 +200,15 @@ class DetektAndroidSpec { @DisplayName("task :lib:detektTest") fun libDetektTest() { gradleRunner.runTasksAndCheckResult(":lib:detektTest") { buildResult -> - assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-releaseUnitTest.xml """) - assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debugUnitTest.xml """) - assertThat(buildResult.output).containsPattern("""--baseline \S*[/\\]detekt-baseline-debugAndroidTest.xml """) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-releaseUnitTest.xml """ + ) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-debugUnitTest.xml """ + ) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-debugAndroidTest.xml """ + ) assertThat(buildResult.output).contains("--report xml:") assertThat(buildResult.output).contains("--report sarif:") assertThat(buildResult.output).doesNotContain("--report txt:") diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektJvmSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektJvmSpec.kt index e8416058421..5e0b082d6a6 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektJvmSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektJvmSpec.kt @@ -40,7 +40,9 @@ class DetektJvmSpec { @Test fun `logs a warning`() { gradleRunner.runTasksAndCheckResult(":detektMain") { buildResult -> - assertThat(buildResult.output).contains("TXT report location set on detekt {} extension will be ignored for detektMain task.") + assertThat(buildResult.output).contains( + "TXT report location set on detekt {} extension will be ignored for detektMain task." + ) } } } @@ -72,7 +74,9 @@ class DetektJvmSpec { @Test fun `logs a warning`() { gradleRunner.runTasksAndCheckResult(":detektMain") { buildResult -> - assertThat(buildResult.output).doesNotContain("report location set on detekt {} extension will be ignored") + assertThat(buildResult.output).doesNotContain( + "report location set on detekt {} extension will be ignored" + ) } } } 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 e72d0197d72..9f1289d15aa 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 @@ -257,7 +257,10 @@ class DetektMultiplatformSpec { @Nested @EnabledOnOs(MAC) - @EnabledIf("io.gitlab.arturbosch.detekt.DetektMultiplatformSpecKt#isXCodeInstalled", disabledReason = "XCode is not installed.") + @EnabledIf( + "io.gitlab.arturbosch.detekt.DetektMultiplatformSpecKt#isXCodeInstalled", + disabledReason = "XCode is not installed." + ) inner class `multiplatform projects - iOS target` { val gradleRunner = setupProject { diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/JvmSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/JvmSpec.kt index 307946fe1ce..b6a614bd8de 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/JvmSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/JvmSpec.kt @@ -15,7 +15,9 @@ class JvmSpec { .buildAndFail() assertThat(result.output).contains("failed with 2 weighted issues.") - assertThat(result.output).contains("Do not directly exit the process outside the `main` function. Throw an exception(...)") + assertThat(result.output).contains( + "Do not directly exit the process outside the `main` function. Throw an exception(...)" + ) assertThat(result.output).contains("Errors.kt:7:9") assertThat(result.output).contains("Errors.kt:12:16") } diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektMultiplatform.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektMultiplatform.kt index 06319abf0c9..e9e456b356d 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektMultiplatform.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektMultiplatform.kt @@ -116,7 +116,8 @@ internal class DetektMultiplatform(private val project: Project) { } registerCreateBaselineTask( - DetektPlugin.BASELINE_TASK_NAME + taskSuffix, extension + DetektPlugin.BASELINE_TASK_NAME + taskSuffix, + extension ) { setSource(inputSource) if (runWithTypeResolution) { 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 c28b56a4cae..1b69a89b2d0 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 @@ -9,7 +9,8 @@ import java.nio.file.Files import java.util.UUID @Suppress("TooManyFunctions", "ClassOrdering") -class DslGradleRunner @Suppress("LongParameterList") constructor( +class DslGradleRunner @Suppress("LongParameterList") +constructor( val projectLayout: ProjectLayout, val buildFileName: String, val mainBuildFileContent: String = "", @@ -18,7 +19,7 @@ class DslGradleRunner @Suppress("LongParameterList") constructor( val gradleVersionOrNone: String? = null, val dryRun: Boolean = false, val jvmArgs: String = "-Xmx2g -XX:MaxMetaspaceSize=1g", - val projectScript: Project.() -> Unit = {}, + val projectScript: Project.() -> Unit = {} ) { private val rootDir: File = Files.createTempDirectory("applyPlugin").toFile().apply { deleteOnExit() } diff --git a/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/MissingWhenCaseSpec.kt b/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/MissingWhenCaseSpec.kt index 42bda1090d9..65ecc4f2058 100644 --- a/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/MissingWhenCaseSpec.kt +++ b/detekt-rules-errorprone/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/bugs/MissingWhenCaseSpec.kt @@ -36,7 +36,9 @@ class MissingWhenCaseSpec(private val env: KotlinCoreEnvironment) { val actual = subject.compileAndLintWithContext(env, code) assertThat(actual).hasSize(1) assertThat(actual.first().issue.id).isEqualTo("MissingWhenCase") - assertThat(actual.first().message).isEqualTo("When expression is missing cases: RED. Either add missing cases or a default `else` case.") + assertThat(actual.first().message).isEqualTo( + "When expression is missing cases: RED. Either add missing cases or a default `else` case." + ) } @Test @@ -58,7 +60,9 @@ class MissingWhenCaseSpec(private val env: KotlinCoreEnvironment) { val actual = subject.compileAndLintWithContext(env, code) assertThat(actual).hasSize(1) assertThat(actual.first().issue.id).isEqualTo("MissingWhenCase") - assertThat(actual.first().message).isEqualTo("When expression is missing cases: RED, null. Either add missing cases or a default `else` case.") + assertThat(actual.first().message).isEqualTo( + "When expression is missing cases: RED, null. Either add missing cases or a default `else` case." + ) } @Test @@ -81,7 +85,9 @@ class MissingWhenCaseSpec(private val env: KotlinCoreEnvironment) { val actual = subject.compileAndLintWithContext(env, code) assertThat(actual).hasSize(1) assertThat(actual.first().issue.id).isEqualTo("MissingWhenCase") - assertThat(actual.first().message).isEqualTo("When expression is missing cases: null. Either add missing cases or a default `else` case.") + assertThat(actual.first().message).isEqualTo( + "When expression is missing cases: null. Either add missing cases or a default `else` case." + ) } @Test @@ -154,7 +160,9 @@ class MissingWhenCaseSpec(private val env: KotlinCoreEnvironment) { val actual = subject.compileAndLintWithContext(env, code) assertThat(actual).hasSize(1) assertThat(actual.first().issue.id).isEqualTo("MissingWhenCase") - assertThat(actual.first().message).isEqualTo("When expression is missing cases: VariantC. Either add missing cases or a default `else` case.") + assertThat(actual.first().message).isEqualTo( + "When expression is missing cases: VariantC. Either add missing cases or a default `else` case." + ) } @Test @@ -177,7 +185,9 @@ class MissingWhenCaseSpec(private val env: KotlinCoreEnvironment) { val actual = subject.compileAndLintWithContext(env, code) assertThat(actual).hasSize(1) assertThat(actual.first().issue.id).isEqualTo("MissingWhenCase") - assertThat(actual.first().message).isEqualTo("When expression is missing cases: null. Either add missing cases or a default `else` case.") + assertThat(actual.first().message).isEqualTo( + "When expression is missing cases: null. Either add missing cases or a default `else` case." + ) } @Test @@ -199,7 +209,9 @@ class MissingWhenCaseSpec(private val env: KotlinCoreEnvironment) { val actual = subject.compileAndLintWithContext(env, code) assertThat(actual).hasSize(1) assertThat(actual.first().issue.id).isEqualTo("MissingWhenCase") - assertThat(actual.first().message).isEqualTo("When expression is missing cases: VariantC, null. Either add missing cases or a default `else` case.") + assertThat(actual.first().message).isEqualTo( + "When expression is missing cases: VariantC, null. Either add missing cases or a default `else` case." + ) } @Test diff --git a/detekt-rules-exceptions/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/exceptions/ThrowingNewInstanceOfSameExceptionSpec.kt b/detekt-rules-exceptions/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/exceptions/ThrowingNewInstanceOfSameExceptionSpec.kt index 05c87835d9c..2df376892ec 100644 --- a/detekt-rules-exceptions/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/exceptions/ThrowingNewInstanceOfSameExceptionSpec.kt +++ b/detekt-rules-exceptions/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/exceptions/ThrowingNewInstanceOfSameExceptionSpec.kt @@ -46,7 +46,9 @@ class ThrowingNewInstanceOfSameExceptionSpec { } @Nested - @DisplayName("a catch block which throws a new instance of the same exception type without wrapping the caught exception") + @DisplayName( + "a catch block which throws a new instance of the same exception type without wrapping the caught exception" + ) inner class CatchBlockThrowingSameExceptionWithoutWrapping { val code = """ fun x() { diff --git a/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/BooleanPropertyNaming.kt b/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/BooleanPropertyNaming.kt index 29ae0bbb0a0..2bb5c283402 100644 --- a/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/BooleanPropertyNaming.kt +++ b/detekt-rules-naming/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/naming/BooleanPropertyNaming.kt @@ -41,7 +41,8 @@ class BooleanPropertyNaming(config: Config = Config.empty) : Rule(config) { private val ignoreOverridden: Boolean by config(true) override val issue = Issue( - javaClass.simpleName, Severity.CodeSmell, + javaClass.simpleName, + Severity.CodeSmell, "Boolean property name should follow the naming convention set in the projects configuration.", Debt.FIVE_MINS ) diff --git a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ForbiddenImportSpec.kt b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ForbiddenImportSpec.kt index 4e89ca8ef30..4542d29b982 100644 --- a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ForbiddenImportSpec.kt +++ b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ForbiddenImportSpec.kt @@ -65,7 +65,9 @@ class ForbiddenImportSpec { } @Test - @DisplayName("should report kotlin.SinceKotlin and kotlin.jvm.JvmField when specified via fully qualified names list") + @DisplayName( + "should report kotlin.SinceKotlin and kotlin.jvm.JvmField when specified via fully qualified names list" + ) fun reportMultipleConfiguredImportsInList() { val findings = ForbiddenImport( diff --git a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/FunctionOnlyReturningConstantSpec.kt b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/FunctionOnlyReturningConstantSpec.kt index 9d132d00350..b674cf7dd2f 100644 --- a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/FunctionOnlyReturningConstantSpec.kt +++ b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/FunctionOnlyReturningConstantSpec.kt @@ -71,7 +71,9 @@ class FunctionOnlyReturningConstantSpec { } @Test - @DisplayName("does not report excluded annotated function which returns a constant when given \"kotlin.SinceKotlin\"") + @DisplayName( + "does not report excluded annotated function which returns a constant when given \"kotlin.SinceKotlin\"" + ) fun ignoreAnnotatedFunctionWhichReturnsConstantWhenGivenKotlinSinceKotlin() { val config = TestConfig(mapOf(EXCLUDE_ANNOTATED_FUNCTION to "kotlin.SinceKotlin")) val rule = FunctionOnlyReturningConstant(config) @@ -79,7 +81,9 @@ class FunctionOnlyReturningConstantSpec { } @Test - @DisplayName("does not report excluded annotated function which returns a constant when given listOf(\"kotlin.SinceKotlin\")") + @DisplayName( + "does not report excluded annotated function which returns a constant when given listOf(\"kotlin.SinceKotlin\")" + ) fun ignoreAnnotatedFunctionWhichReturnsConstantWhenGivenListOfKotlinSinceKotlin() { val config = TestConfig(mapOf(EXCLUDE_ANNOTATED_FUNCTION to listOf("kotlin.SinceKotlin"))) val rule = FunctionOnlyReturningConstant(config) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a850b56bf50..9c4855cb713 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ dokka = "1.7.0" jacoco = "0.8.8" kotlin = "1.6.21" -ktlint = "0.45.2" +ktlint = "0.46.1" junit = "5.8.2" contester = "0.2.0" diff --git a/scripts/github-milestone-report.main.kts b/scripts/github-milestone-report.main.kts index d0042bbe9dd..f766a7a2811 100755 --- a/scripts/github-milestone-report.main.kts +++ b/scripts/github-milestone-report.main.kts @@ -7,7 +7,8 @@ * You need kotlin 1.3.70+ installed on your machine */ -@file:Suppress("detekt.CommentSpacing") // for the exec line +// for the exec line +@file:Suppress("detekt.CommentSpacing") @file:DependsOn("org.kohsuke:github-api:1.135") @file:DependsOn("com.github.ajalt:clikt:2.8.0")