Ktlint Rule Set
This rule set provides wrappers for rules implemented by ktlint - https://ktlint.github.io/.
Note: The ktlint
rule set is not included in the detekt-cli or Gradle plugin.
To enable this rule set, add detektPlugins "dev.detekt:detekt-rules-ktlint-wrapper:$version"
to your gradle dependencies
or reference the detekt-rules-ktlint-wrapper
-jar with the --plugins
option
in the command line interface.
Note: Issues reported by this rule set can only be suppressed on file level (@file:Suppress("detekt.rule")
).
Configuration options:
-
code_style
(default:'intellij_idea'
) (android default:'intellij_idea'
)ktlint code style for formatting rules (ktlint_official, intellij_idea or android_studio)
-
autoCorrect
(default:true
) (android default:true
)if rules should auto correct style violation
AnnotationOnSeparateLine
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
Configuration options:
-
indentSize
(default:4
)indentation size
AnnotationSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
ArgumentListWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
ignoreRuleParameterThreshold
(default:8
)parameter threshold to ignore rule
BackingPropertyNaming
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
BinaryExpressionWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
indentSize
(default:4
)indentation size
BlankLineBeforeDeclaration
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
BlankLineBetweenWhenConditions
See ktlint docs for documentation.
Active by default: No
Configuration options:
-
lineBreakAfterWhenEntries
(default:true
)require line breaks after multiline entries
BlockCommentInitialStarAlignment
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
ChainMethodContinuation
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
forceMultilineWhenChainOperatorCountGreaterOrEqualThan
(default:4
)chain operator count means multiline threshold
ChainWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
ClassName
See ktlint docs for documentation.
Active by default: No
ClassSignature
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
CommentSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
CommentWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
Configuration options:
-
indentSize
(default:4
)indentation size
ConditionWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
ContextReceiverListWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
indentSize
(default:4
)indentation size
ContextReceiverMapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
indentSize
(default:4
)indentation size
EnumEntryNameCase
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
Aliases: EnumEntryName
Configuration options:
-
enumEntryNameCasing
(default:'upper_or_camel_cases'
)enum entry naming casing
EnumWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
ExpressionOperandWrapping
See ktlint docs for documentation.
Active by default: No
Configuration options:
-
indentSize
(default:4
)indentation size
Filename
See ktlint docs for documentation.
This rules overlaps with naming>MatchingDeclarationName from the standard rules, make sure to enable just one.
Active by default: Yes - Since v1.0.0
FinalNewline
See ktlint docs for documentation.
This rules overlaps with style>NewLineAtEndOfFile from the standard rules, make sure to enable just one. The pro of this rule is that it can auto-correct the issue.
Active by default: Yes - Since v1.0.0
Configuration options:
-
insertFinalNewLine
(default:true
)report absence or presence of a newline
FunKeywordSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
FunctionExpressionBody
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
FunctionLiteral
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
FunctionName
See ktlint docs for documentation.
Active by default: No
FunctionReturnTypeSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
FunctionSignature
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
forceMultilineWhenParameterCountGreaterOrEqualThan
(default:2147483647
)parameter count means multiline threshold
-
functionBodyExpressionWrapping
(default:'default'
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
indentSize
(default:4
)indentation size
FunctionStartOfBodySpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
FunctionTypeModifierSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
FunctionTypeReferenceSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
IfElseBracing
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
IfElseWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
ImportOrdering
See ktlint docs for documentation.
For defining import layout patterns see the KtLint Source Code
Active by default: Yes - Since v1.19.0
Configuration options:
-
layout
(default:'*,java.**,javax.**,kotlin.**,^'
) (android default:'*'
)the import ordering layout
Indentation
See ktlint docs for documentation.
Active by default: Yes - Since v1.19.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
indentWhenArrowOnNewLine
(default:false
)indent when arrow on new line
Kdoc
See ktlint docs for documentation.
Active by default: No
KdocWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
Configuration options:
-
indentSize
(default:4
)indentation size
MaximumLineLength
See ktlint docs for documentation.
This rules overlaps with style>MaxLineLength from the standard rules, make sure to enable just one or keep them aligned.
Active by default: Yes - Since v1.0.0
Aliases: MaxLineLength
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
ignoreBackTickedIdentifier
(default:false
)ignore back ticked identifier
MixedConditionOperators
See ktlint docs for documentation.
Active by default: No
ModifierListSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
Configuration options:
-
indentSize
(default:4
)indentation size
ModifierOrdering
See ktlint docs for documentation.
This rules overlaps with style>ModifierOrder from the standard rules, make sure to enable just one. The pro of this rule is that it can auto-correct the issue.
Active by default: Yes - Since v1.0.0
MultiLineIfElse
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
Configuration options:
-
indentSize
(default:4
)indentation size
MultilineExpressionWrapping
See ktlint docs for documentation.
Although this is a standard rule it is not enabled by default like other standard ktlint rules. ktlint only enables this rule when the rule is explicitly enabled or if the code style is set to ktlint_official. detekt uses intellij_idea by default.
Active by default: No
Configuration options:
-
indentSize
(default:4
)indentation size
-
functionBodyExpressionWrapping
(default:'multiline'
)function body expression wrapping
MultilineLoop
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
NoBlankLineBeforeRbrace
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoBlankLineInList
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
NoBlankLinesInChainedMethodCalls
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
NoConsecutiveBlankLines
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoConsecutiveComments
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
NoEmptyClassBody
See ktlint docs for documentation.
This rules overlaps with empty-blocks>EmptyClassBlock from the standard rules, make sure to enable just one.
Active by default: Yes - Since v1.0.0
NoEmptyFile
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
NoEmptyFirstLineInClassBody
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
NoEmptyFirstLineInMethodBlock
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
NoLineBreakAfterElse
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoLineBreakBeforeAssignment
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoMultipleSpaces
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoSemicolons
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoSingleLineBlockComment
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
NoTrailingSpaces
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoUnitReturn
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoUnusedImports
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
NoWildcardImports
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
Configuration options:
-
packagesToUseImportOnDemandProperty
(default:'java.util.*,kotlinx.android.synthetic.**'
)Defines allowed wildcard imports
NullableTypeSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
PackageName
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
ParameterListSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
ParameterListWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
Configuration options:
-
maxLineLength
(default:120
) (android default:100
)maximum line length
-
indentSize
(default:4
)indentation size
ParameterWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
PropertyName
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
constantNamingStyle
(default:'screaming_snake_case'
)The naming style ('screaming_snake_case', or 'pascal_case') to be applied on constant properties.
PropertyWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length
SpacingAroundAngleBrackets
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
SpacingAroundColon
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundComma
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundCurly
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
SpacingAroundDot
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundDoubleColon
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
SpacingAroundKeyword
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundOperators
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundParens
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundRangeOperator
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
SpacingAroundSquareBrackets
See ktlint docs for documentation.
Active by default: No
SpacingAroundUnaryOperator
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
SpacingBetweenDeclarationsWithAnnotations
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
SpacingBetweenDeclarationsWithComments
See ktlint docs for documentation.
Active by default: Yes - Since v1.22.0
SpacingBetweenFunctionNameAndOpeningParenthesis
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
StatementWrapping
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
StringTemplate
See ktlint docs for documentation.
Active by default: Yes - Since v1.0.0
StringTemplateIndent
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
TrailingCommaOnCallSite
See ktlint docs for documentation.
The default config comes from ktlint and follows these conventions:
- Kotlin coding convention recommends trailing comma encourage the use of trailing commas at the declaration site and leaves it at your discretion for the call site.
- Android Kotlin style guide does not include trailing comma usage yet.
Active by default: Yes - Since v2.0.0
Configuration options:
-
useTrailingCommaOnCallSite
(default:true
) (android default:false
)Defines whether trailing commas are required (true) or forbidden (false) at call sites
TrailingCommaOnDeclarationSite
See ktlint docs for documentation.
The default config comes from ktlint and follows these conventions:
- Kotlin coding convention recommends trailing comma encourage the use of trailing commas at the declaration site and leaves it at your discretion for the call site.
- Android Kotlin style guide does not include trailing comma usage yet.
Active by default: Yes - Since v2.0.0
Configuration options:
-
useTrailingCommaOnDeclarationSite
(default:true
) (android default:false
)Defines whether trailing commas are required (true) or forbidden (false) at declaration sites
TryCatchFinallySpacing
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
TypeArgumentComment
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
TypeArgumentListSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
TypeParameterComment
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
TypeParameterListSpacing
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
Configuration options:
-
indentSize
(default:4
)indentation size
UnnecessaryParenthesesBeforeTrailingLambda
See ktlint docs for documentation.
Active by default: Yes - Since v1.23.0
ValueArgumentComment
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
ValueParameterComment
See ktlint docs for documentation.
Active by default: Yes - Since v2.0.0
WhenEntryBracing
See ktlint docs for documentation.
Active by default: No
Configuration options:
-
indentSize
(default:4
)indentation size
Wrapping
See ktlint docs for documentation.
Active by default: Yes - Since v1.20.0
Configuration options:
-
indentSize
(default:4
)indentation size
-
maxLineLength
(default:120
) (android default:100
)maximum line length