Changelog History
Page 1
-
v0.47.1 Changes
September 07, 2022๐ Fixed
- ๐ Do not add trailing comma in empty parameter/argument list with comments (
trailing-comma-on-call-site
,trailing-comma-on-declaration-site
) (#1602) - ๐ Fix class cast exception when specifying a non-string editorconfig setting in the default ".editorconfig" (#1627)
- ๐ Fix indentation before semi-colon when it is pushed down after inserting a trailing comma (#1609)
- ๐ Do not show deprecation warning about property "disabled_rules" when using CLi-parameter
--disabled-rules
(#1599) - ๐ Traversing directory hierarchy at Windows (#1600)
- ๐ Ant-style path pattern support (#1601)
- ๐ Apply
@file:Suppress
on all toplevel declarations (#1623)
๐ Changed
- ๐ Display warning instead of error when no files are matched, and return with exit code 0. (#1624)
- ๐ Do not add trailing comma in empty parameter/argument list with comments (
-
v0.47.0 Changes
August 19, 2022API Changes & RuleSet providers
๐ If you are not an API consumer 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.
๐ Rule lifecycle hooks / deprecate RunOnRootOnly visitor modifier
๐ Up until ktlint 0.46 the Rule class provided only one life cycle hook. This "visit" hook was called in a depth-first-approach on all nodes in the file. A rule like the IndentationRule used the RunOnRootOnly visitor modifier to call this lifecycle hook for the root node only in combination with an alternative way of traversing the ASTNodes. Downside of this approach was that suppression of the rule on blocks inside a file was not possible (#631). More generically, this applied to all rules, applying alternative traversals of the AST.
The Rule class now offers new life cycle hooks:
- beforeFirstNode: This method is called once before the first node is visited. It can be used to initialize the state of the rule before processing of nodes starts. The ".editorconfig" properties (including overrides) are provided as parameter.
- ๐ beforeVisitChildNodes: This method is called on a node in AST before visiting its child nodes. This is repeated recursively for the child nodes resulting in a depth first traversal of the AST. This method is the equivalent of the "visit" life cycle hooks. However, note that in KtLint 0.48, the UserData of the rootnode no longer provides access to the ".editorconfig" properties. This method can be used to emit Lint Violations and to autocorrect if applicable.
- ๐ afterVisitChildNodes: This method is called on a node in AST after all its child nodes have been visited. This method can be used to emit Lint Violations and to autocorrect if applicable.
- afterLastNode: This method is called once after the last node in the AST is visited. It can be used for teardown of the state of the rule.
๐ Optionally, a rule can stop the traversal of the remainder of the AST whenever the goal of the rule has been achieved. See KDoc on Rule class for more information.
The "visit" life cycle hook will be removed in Ktlint 0.48. In KtLint 0.47 the "visit" life cycle hook will be called only when hook "beforeVisitChildNodes" is not overridden. It is recommended to migrate to the new lifecycle hooks in KtLint 0.47. Please create an issue, in case you need additional assistence to implement the new life cycle hooks in your rules.
Ruleset providing by Custom Rule Set Provider
๐ The KtLint engine needs a more fine-grained control on the instantiation of new Rule instances. Currently, a new instance of a rule can be created only once per file. However, when formatting files the same rule instance is reused for a second processing iteration in case a Lint violation has been autocorrected. By re-using the same rule instance, state of that rule might leak from the first to the second processing iteration.
๐ Providers of custom rule sets have to migrate the custom rule set JAR file. The current RuleSetProvider interface which is implemented in the custom rule set is deprecated and marked for removal in KtLint 0.48. Custom rule sets using the old RuleSetProvider interface will not be run in KtLint 0.48 or above.
๐ For now, it is advised to implement the new RuleSetProviderV2 interface without removing the old RuleSetProvider interface. In this way, KtLint 0.47 and above use the RuleSetProviderV2 interface and ignore the old RuleSetProvider interface completely. KtLint 0.46 and below only use the old RuleSetProvider interface.
โ Adding the new interface is straight forward, as can be seen below:
// Current implementation public class CustomRuleSetProvider : RuleSetProvider { override fun get(): RuleSet = RuleSet( "custom", CustomRule1(), CustomRule2(), ) } // New implementation public class CustomRuleSetProvider : RuleSetProviderV2(CUSTOM_RULE_SET_ID), RuleSetProvider { override fun get(): RuleSet = RuleSet( CUSTOM_RULE_SET_ID, CustomRule1(), CustomRule2() ) override fun getRuleProviders(): Set<RuleProvider> = setOf( RuleProvider { CustomRule1() }, RuleProvider { CustomRule2() } ) private companion object { const val CUSTOM_RULE_SET_ID = custom" } }
๐ Also note that file 'resource/META-INF/services/com.pinterest.ktlint.core.RuleSetProviderV2' needs to be added. In case your custom rule set provider implements both RuleSetProvider and RuleSetProviderV2, the resource directory contains files for both implementation. The content of those files is identical as the interfaces are implemented on the same class.
๐ Once above has been implemented, rules no longer have to clean up their internal state as the KtLint rule engine can request a new instance of the Rule at any time it suspects that the internal state of the Rule is tampered with (e.g. as soon as the Rule instance is used for traversing the AST).
Rule set providing by API Consumer
๐ The KtLint engine needs a more fine-grained control on the instantiation of new Rule instances. Currently, a new instance of a rule can be created only once per file. However, when formatting files the same rule instance is reused for a second processing iteration in case a Lint violation has been autocorrected. By re-using the same rule instance, state of that rule might leak from the first to the second processing iteration.
๐ The ExperimentalParams parameter which is used to invoke "KtLint.lint" and "KtLint.format" contains a new parameter "ruleProviders" which will replace the "ruleSets" parameter in KtLint 0.48. Exactly one of those parameters should be a non-empty set. It is preferred that API consumers migrate to using "ruleProviders".
// Old style using "ruleSets" KtLint.format( KtLint.ExperimentalParams( ... ruleSets = listOf( RuleSet( "custom", CustomRule1(), CustomRule2() ) ), ... ) ) // New style using "ruleProviders" KtLint.format( KtLint.ExperimentalParams( ... ruleProviders = setOf( RuleProvider { CustomRule1() }, RuleProvider { CustomRule2() } ), cb = { _, _ -> } ) )
๐ Once above has been implemented, rules no longer have to clean up their internal state as the KtLint rule engine can request a new instance of the Rule at any time it suspects that the internal state of the Rule is tampered with (e.g. as soon as the Rule instance is used for traversing the AST).
Format callback
The callback function provided as parameter to the format function is now called for all errors regardless whether the error has been autocorrected. Existing consumers of the format function should now explicitly check the
autocorrected
flag in the callback result and handle it appropriately (in most case this will be ignoring the callback results for whichautocorrected
has valuetrue
).CurrentBaseline
๐ Class
com.pinterest.ktlint.core.internal.CurrentBaseline
has been replaced withcom.pinterest.ktlint.core.api.Baseline
.Noteworthy changes:
- ๐ Field
baselineRules
(nullable) is replaced with `lintErrorsPerFile (non-nullable). - Field
baselineGenerationNeeded
(boolean) is replaced withstatus
(typeBaseline.Status
).
๐ The utility functions provided via
com.pinterest.ktlint.core.internal.CurrentBaseline
are moved to the new class. One new methodList<LintError>.doesNotContain(lintError: LintError)
is added..editorconfig property "disabled_rules"
๐ The
.editorconfig
propertydisabled_rules
(api propertyDefaultEditorConfigProperties.disabledRulesProperty
) has been deprecated and will be removed in a future version. Usektlint_disabled_rules
(api propertyDefaultEditorConfigProperties.ktlintDisabledRulesProperty
) instead as it more clearly identifies that ktlint is the owner of the property. This property is to be renamed in.editorconfig
files andExperimentalParams.editorConfigOverride
.๐ Although, Ktlint 0.47.0 falls back on property
disabled_rules
wheneverktlint_disabled_rules
is not found, this result in a warning message being printed.0๏ธโฃ Default/alternative .editorconfig
๐ Parameter "ExperimentalParams.editorConfigPath" is deprecated in favor of the new parameter "ExperimentalParams.editorConfigDefaults". When used in the old implementation this resulted in ignoring all ".editorconfig" files on the path to the file. The new implementation uses properties from the "editorConfigDefaults"parameter only when no ".editorconfig" files on the path to the file supplies this property for the filepath.
0๏ธโฃ API consumers can easily create the EditConfigDefaults by calling 0๏ธโฃ "EditConfigDefaults.load(path)" or creating it programmatically.
Reload of
.editorconfig
file๐ Some API Consumers keep a long-running instance of the KtLint engine alive. In case an
.editorconfig
file is changed, which was already loaded into the internal cache of the KtLint engine this change would not be taken into account by KtLint. One way to deal with this, was to clear the entire KtLint cache after each change in an.editorconfig
file.Now, the API consumer can reload an
.editorconfig
. If the.editorconfig
with given path is actually found in the cached, it will be replaced with the new value directly. If the file is not yet loaded in the cache, loading will be deferred until the file is actually requested again.Example:
KtLint.reloadEditorConfigFile("/some/path/to/.editorconfig")
Miscellaneous
๐ Several methods for which it is unlikely that they are used by API consumers have been marked for removal from the public API in KtLint 0.48.0. Please create an issue in case you have a valid business case to keep such methods in the public API.
โ Added
- โ Add
format
reporter. This reporter prints a one-line-summary of the formatting status per file. (#621).
๐ Fixed
- ๐ Fix cli argument "--disabled_rules" (#1520).
- ๐ A file which contains a single top level declaration of type function does not need to be named after the function but only needs to adhere to the PascalCase convention.
filename
(#1521). - ๐ Disable/enable IndentationRule on blocks in middle of file. (
indent
) #631 - ๐ Allow usage of letters with diacritics in enum values and filenames (
enum-entry-name-case
,filename
) (#1530). - Fix resolving of Java version when JAVA_TOOL_OPTIONS is set (#1543)
- ๐ When a glob is specified then ensure that it matches files in the current directory and not only in subdirectories of the current directory (#1533).
- ๐ Execute
ktlint
cli on default kotlin extensions only when an (existing) path to a directory is given. (#917). - ๐ Invoke callback on
format
function for all errors including errors that are autocorrected (#1491) - ๐ Merge first line of body expression with function signature only when it fits on the same line
function-signature
(#1527) - โ Add missing whitespace when else is on same line as true condition
multiline-if-else
(#1560) - ๐ Fix multiline if-statements
multiline-if-else
(#828) - Prevent class cast exception on ".editorconfig" property
ktlint_code_style
(#1559) - ๐ Handle trailing comma in enums
trailing-comma
(#1542) - ๐ Allow EOL comment after annotation (#1539)
- ๐ Split rule
trailing-comma
intotrailing-comma-on-call-site
andtrailing-comma-on-declaration-site
(#1555) - ๐ Support globs containing directories in the ".editorconfig" supplied via CLI "--editorconfig" (#1551)
- ๐ Fix indent of when entry with a dot qualified expression instead of simple value when trailing comma is required (#1519)
- ๐ Fix whitespace between trailing comma and arrow in when entry when trailing comma is required (#1519)
- ๐ Prevent false positive in parameter list for which the last value parameter is a destructuring declaration followed by a trailing comma
wrapping
(#1578)
๐ Changed
- ๐ Print an error message and return with non-zero exit code when no files are found that match with the globs (#629).
- ๐ Invoke callback on
format
function for all errors including errors that are autocorrected (#1491) - ๐ Improve rule
annotation
(#1574) - ๐ Rename
.editorconfig
propertydisabled_rules
toktlint_disabled_rules
(#701) - ๐ Allow file and directory paths in CLI-parameter "--editorconfig" (#1580)
- โก๏ธ Update Kotlin development version to
1.7.20-beta
and Kotlin version to1.7.10
. - ๐ Update release scripting to set version number in mkdocs documentation (#1575).
- โก๏ธ Update Gradle to
7.5.1
version
โ Removed
- โ Remove support to generate IntelliJ IDEA configuration files as this no longer fits the scope of the ktlint project (#701)
-
v0.46.1 Changes
June 21, 2022๐ Minor release to address some regressions introduced in 0.46.0
๐ Fixed
- โ Remove experimental flag
-Xuse-k2
as it forces API Consumers to compile their projects with this same flag (#1506). - ๐ Account for separating spaces when parsing the disabled rules (#1508).
- ๐ Do not remove space before a comment in a parameter list (#1509).
- ๐ A delegate property which starts on the same line as the property declaration should not have an extra indentation
indent
(#1510)
- โ Remove experimental flag
-
v0.46.0 Changes
June 18, 2022Promoting experimental rules to standard
The rules below are promoted from the
experimental
ruleset to thestandard
ruleset.annotation
annotation-spacing
argument-list-wrapping
double-colon-spacing
enum-entry-name-case
multiline-if-else
no-empty-first-line-in-method-block
- ๐ฆ
package-name
trailing-comma
spacing-around-angle-brackets
spacing-between-declarations-with-annotations
spacing-between-declarations-with-comments
unary-op-spacing
๐ Note that as a result of moving the rules that the prefix
experimental:
has to be removed from all references to this rule. Check references in:- The
.editorconfig
settingdisabled_rules
. - ๐ KtLint disable and enable directives.
- The
VisitorModifier.RunAfterRule
.
๐ If your project did not run with the
experimental
ruleset enabled before, you might expect new lint violations to be reported. Please note that rules can be disabled via the the.editorconfig
in case you do not want the rules to be applied on your project.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.
๐ Lint and formatting functions
๐ The lint and formatting changes no longer accept parameters of type
Params
but onlyExperimentalParams
. Also, the VisitorProvider parameter has been removed. Because of this, your integration with KtLint breaks. Based on feedback with ktlint 0.45.x, we now prefer to break at compile time instead of trying to keep the interface backwards compatible. Please raise an issue, in case you help to convert to the new API.๐ Use of ".editorconfig" properties & userData
๐ป The interface
UsesEditorConfigProperties
provides methodgetEditorConfigValue
to retrieve a named.editorconfig
property for a given ASTNode. When implementing this interface, the valueeditorConfigProperties
needs to be overridden. Previously it was not checked whether a retrieved property was actually recorded in this list. Now, retrieval of unregistered properties results in an exception.๐ Property
Ktlint.DISABLED
has been removed. The property value can now be retrieved as follows:astNode .getEditorConfigValue(DefaultEditorConfigProperties.disabledRulesProperty) .split(",")
and be supplied via the
ExperimentalParams
as follows:ExperimentalParams( ... editorConfigOverride = EditorConfigOverride.from( DefaultEditorConfigProperties.disabledRulesProperty to "some-rule-id,experimental:some-other-rule-id" ) ... )
๐ Property
Ktlint.ANDROID_USER_DATA_KEY
has been removed. The property value can now be retrieved as follows:astNode .getEditorConfigValue(DefaultEditorConfigProperties.codeStyleProperty)
and be supplied via the
ExperimentalParams
as follows:ExperimentalParams( ... editorConfigOverride = EditorConfigOverride.from( DefaultEditorConfigProperties.codeStyleProperty to "android" ) ... )
๐ This property defaults to the
official
Kotlin code style when not set.๐ Testing KtLint rules
๐ An AssertJ style API for testing KtLint rules (#1444) has been added. Usage of this API is encouraged in favor of using the old RuleExtension API. For more information, see KtLintAssertThat API
โ Added
- โ Add experimental rule for unexpected spacing between function name and opening parenthesis (
spacing-between-function-name-and-opening-parenthesis
) (#1341) - โ Add experimental rule for unexpected spacing in the parameter list (
parameter-list-spacing
) (#1341) - โ Add experimental rule for incorrect spacing around the function return type (
function-return-type-spacing
) (#1341) - โ Add experimental rule for unexpected spaces in a nullable type (
nullable-type-spacing
) (#1341) - ๐ Do not add a space after the typealias name (
type-parameter-list-spacing
) (#1435) - โ Add experimental rule for consistent spacing before the start of the function body (
function-start-of-body-spacing
) (#1341) - ๐ Suppress ktlint rules using
@Suppress
(more information) (#765) - โ Add experimental rule for rewriting the function signature (
function-signature
) (#1341)
๐ Fixed
- ๐ Move disallowing blank lines in chained method calls from
no-consecutive-blank-lines
to new rule (no-blank-lines-in-chained-method-calls
) (#1248) - ๐ Fix check of spacing in the receiver type of an anonymous function (#1440)
- ๐ Allow comment on same line as super class in class declaration
wrapping
(#1457) - ๐ Respect git hooksPath setting (#1465)
- ๐ Fix formatting of a property delegate with a dot-qualified-expression
indent
(#1340) - ๐ Keep formatting of for-loop in sync with default IntelliJ formatter (
indent
) and a newline in the expression in a for-statement should not force to wrap itwrapping
(#1350) - ๐ Fix indentation of property getter/setter when the property has an initializer on a separate line
indent
(#1335) - ๐ When
.editorconfig
settingindentSize
is set to valuetab
then return the default tab width as value forindentSize
(#1485) - ๐ Allow suppressing all rules or a list of specific rules in the entire file with
@file:Suppress(...)
(#1029)
๐ Changed
- โก๏ธ Update Kotlin development version to
1.7.0
and Kotlin version to1.7.0
. - ๐ Update shadow plugin to
7.1.2
release - ๐ Update picocli to
4.6.3
release - ๐ A file containing only one (non private) top level declaration (class, interface, object, type alias or function) must be named after that declaration. The name also must comply with the Pascal Case convention. The same applies to a file containing one single top level class declaration and one ore more extension functions for that class.
filename
(#1004) - ๐ Promote experimental rules to standard rules set:
annotation
,annotation-spacing
,argument-list-wrapping
,double-colon-spacing
,enum-entry-name-case
,multiline-if-else
,no-empty-first-line-in-method-block
,package-name
,traling-comma
,spacing-around-angle-brackets
,spacing-between-declarations-with-annotations
,spacing-between-declarations-with-comments
,unary-op-spacing
(#1481) - The CLI parameter
--android
can be omitted when the.editorconfig
propertyktlint_code_style = android
is defined
-
v0.45.2 Changes
April 06, 2022๐ Fixed
- ๐ Resolve compatibility issues introduced in 0.45.0 and 0.45.1 (#1434). Thanks to mateuszkwiecinski and jeremymailen for your input on this issue.
๐ Changed
- Set Kotlin development version to
1.6.20
and Kotlin version to1.6.20
.
-
v0.45.1 Changes
March 21, 2022๐ Minor release to fix a breaking issue with
ktlint
API consumers๐ Fixed
- โ Remove logback dependency from ktlint-core module (#1421)
-
v0.45.0 Changes
March 18, 2022API 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 methodASTNode.getEditorConfigValue(editorConfigProperty)
of interfaceUsesEditorConfigProperties
which is provided in this release. Starting from next release after the current release, the EditConfig and/oruserData[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)
โ Removed
- โ Add experimental rule for unexpected spaces in a type reference before a function identifier (
-
v0.44.0 Changes
February 15, 2022๐ Please welcome paul-dingemans as an official maintainer of ktlint!
โ Added
- ๐ Use Gradle JVM toolchain with language version 8 to compile the project
- ๐ Basic tests for CLI (#540)
- โ Add experimental rule for unnecessary parentheses in function call followed by lambda (#1068)
๐ Fixed
- ๐ Fix indentation of function literal (#1247)
- ๐ Fix false positive in rule spacing-between-declarations-with-annotations (#1281)
- ๐ Do not remove imports for same class when different alias is used (#1243)
- ๐ Fix NoSuchElementException for property accessor (
trailing-comma
) (#1280) - ๐ Fix ClassCastException using ktlintFormat on class with KDoc (
no-trailing-spaces
) (#1270) - ๐ Do not remove trailing comma in annotation (#1297)
- ๐ Do not remove import which is used as markdown link in KDoc only (
no-unused-imports
) (#1282) - ๐ Fix indentation of secondary constructor (
indent
) (#1222) - ๐ Custom gradle tasks with custom ruleset results in warning (#1269)
- ๐ Fix alignment of arrow when trailing comma is missing in when entry (
trailing-comma
) (#1312) - ๐ Fix indent of delegated super type entry (
indent
) (#1210) - ๐ Improve indentation of closing quotes of a multiline raw string literal (
indent
) (#1262) - ๐ Trailing space should not lead to delete of indent of next line (
no-trailing-spaces
) (#1334) - ๐ Force a single line function type inside a nullable type to a separate line when the max line length is exceeded (
parameter-list-wrapping
) (#1255) - ๐ A single line function with a parameter having a lambda as default argument does not throw error (
indent
) (#1330) - ๐ Fix executable jar on Java 16+ (#1195)
- ๐ Fix false positive unused import after autocorrecting a trailing comma (#1367)
- ๐ Fix false positive indentation (
parameter-list-wrapping
,argument-list-wrapping
) (#897, #1045, #1119, #1255, #1267, #1319, #1320, #1337 - ๐ Force a single line function type inside a nullable type to a separate line when the max line length is exceeded (
parameter-list-wrapping
) (#1255)
๐ Changed
- ๐ Update Kotlin version to
1.6.0
release - โ Add separate tasks to run tests on JDK 11 - "testOnJdk11"
- ๐ Update Dokka to
1.6.0
release - ๐ Apply ktlint experimental rules on the ktlint code base itself.
- ๐ Update shadow plugin to
7.1.1
release - โ Add Kotlin-logging backed by logback as logging framework (#589)
- โก๏ธ Update Gradle to
7.4
version
-
v0.43.2 Changes
December 01, 2021๐ Fixed
- ๐ KtLint CLI 0.43 doesn't work with JDK 1.8 (#1271)
-
v0.43.0 Changes
November 02, 2021โ Added
- ๐ New
trailing-comma
rule (#709) (prior art by paul-dingemans) ### ๐ Fixed - ๐ Fix false positive with lambda argument and call chain (
indent
) (#1202) - ๐ Fix trailing spaces not formatted inside block comments (
no-trailing-spaces
) (#1197) - ๐ Do not check for
.idea
folder presence when usingapplyToIDEA
globally (#1186) - โ Remove spaces before primary constructor (
paren-spacing
) (#1207) - ๐ Fix false positive for delegated properties with a lambda argument (
indent
) (#1210) - ๐ (REVERTED in Ktlint 0.45.0) Remove unnecessary wildcard imports (
no-unused-imports
) (#1256) - ๐ Fix indentation of KDoc comment when using tab indentation style (
indent
) (#850) ### ๐ Changed - ๐ Support absolute paths for globs (#1131)
- ๐ Fix regression from 0.41 with argument list wrapping after dot qualified expression (
argument-list-wrapping
)(#1159) - โก๏ธ Update Gradle to
7.2
version - โก๏ธ Update Gradle shadow plugin to
7.1
version - โก๏ธ Update Kotlin version to
1.5.31
version. Default Kotlin API version was changed to1.4
!
- ๐ New