Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump ktlint to version 0.46.1 #5044

Merged
merged 6 commits into from Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion code-coverage-report/build.gradle.kts
Expand Up @@ -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)
)
}

Expand Down
2 changes: 2 additions & 0 deletions config/detekt/detekt.yml
Expand Up @@ -73,6 +73,8 @@ formatting:
active: true
EnumEntryNameCase:
active: true
Filename:
active: false
MaximumLineLength:
active: false
MultiLineIfElse:
Expand Down
Expand Up @@ -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(
Expand Down
Expand Up @@ -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)
Expand All @@ -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)
Expand Down
Expand Up @@ -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."
)
}
}
}
Expand Up @@ -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."
)
}
}

Expand Down Expand Up @@ -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
Expand All @@ -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."
)
}
}

Expand Down
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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)
Expand All @@ -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(
Expand Down
Expand Up @@ -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
Expand Down Expand Up @@ -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),
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,21 +1,21 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -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.")
}
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down
@@ -1,14 +1,16 @@
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

/**
* 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()
Expand Down