[0.45.0] - 2022-03-18
API Changes & RuleSet providers
If you are not an API user nor a RuleSet provider, then you can safely skip this section. Otherwise, please read below carefully and upgrade your usage of ktlint. In this and coming releases, we are changing and adapting important parts of our API in order to increase maintainability and flexibility for future changes. Please avoid skipping a releases as that will make it harder to migrate.
Retrieving ".editorconfig" property value
This section is applicable when providing rules that depend on one or more values of ".editorconfig" properties. Property values should no longer be retrieved via EditConfig or directly via userData[EDITOR_CONFIG_USER_DATA_KEY]
. Property values should now only be retrieved using method ASTNode.getEditorConfigValue(editorConfigProperty)
of interface UsesEditorConfigProperties
which is provided in this release. Starting from next release after the current release, the EditConfig and/or userData[EDITOR_CONFIG_USER_DATA_KEY]
may be removed without further notice which will break your API or rule. To prevent disruption of your end user, you should migrate a.s.a.p.
Added
- Add experimental rule for unexpected spaces in a type reference before a function identifier (
function-type-reference-spacing
) (#1341) - Add experimental rule for incorrect spacing after a type parameter list (
type-parameter-list-spacing
) (#1366) - Add experimental rule to detect discouraged comment locations (
discouraged-comment-location
) (#1365) - Add rule to check spacing after fun keyword (
fun-keyword-spacing
) (#1362) - Add experimental rules for unnecessary spacing between modifiers in and after the last modifier in a modifier list (#1361)
- New experimental rule for aligning the initial stars in a block comment when present (
experimental:block-comment-initial-star-alignment
(#297) - Respect
.editorconfig
propertyij_kotlin_packages_to_use_import_on_demand
(no-wildcard-imports
) (#1272) - Add new experimental rules for wrapping of block comment (
comment-wrapping
) (#1403) - Add new experimental rules for wrapping of KDoc comment (
kdoc-wrapping
) (#1403) - Add experimental rule for incorrect spacing after a type parameter list (
type-parameter-list-spacing
) (#1366) - Expand check task to run tests on JDK 17 - "testOnJdk17"
Fixed
- Fix lint message to "Unnecessary long whitespace" (
no-multi-spaces
) (#1394) - Do not remove trailing comma after a parameter of type array in an annotation (experimental:trailing-comma) (#1379)
- Do not delete blank lines in KDoc (no-trailing-spaces) (#1376)
- Do not indent raw string literals that are not followed by either trimIndent() or trimMargin() (
indent
) (#1375) - Revert remove unnecessary wildcard imports as introduced in Ktlint 0.43.0 (
no-unused-imports
) (#1277), (#1393), (#1256) - (Possibly) resolve memory leak (#1216)
- Initialize loglevel in Main class after parsing the CLI parameters (#1412)
Changed
- Print the rule id always in the PlainReporter (#1121)
- All wrapping logic is moved from the
indent
rule to the new rulewrapping
(as part of thestandard
ruleset). In case you currently have disabled theindent
rule, you may want to reconsider whether this is still necessary or that you also want to disable the newwrapping
rule to keep the status quo. Both rules can be run independent of each other. (#835)