Skip to content

Releases: pinterest/ktlint

0.45.0

18 Mar 17:23
5858e33
Compare
Choose a tag to compare

[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 property ij_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 rule wrapping (as part of the standard ruleset). In case you currently have disabled the indent rule, you may want to reconsider whether this is still necessary or that you also want to disable the new wrapping rule to keep the status quo. Both rules can be run independent of each other. (#835)

Removed

0.44.0

15 Feb 18:47
8809f48
Compare
Choose a tag to compare

[0.44.0] - 2022-02-15

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

0.43.2

01 Dec 18:02
Compare
Choose a tag to compare

[0.43.2] - 2021-12-01

Minor release to fix JDK 1.8 support

Note: Please do not use the 0.43.1 release.

Fixed

  • KtLint CLI 0.43 doesn't work with JDK 1.8 (#1271)

0.43.0

02 Nov 16:11
48240ed
Compare
Choose a tag to compare

[0.43.0] - 2021-11-02

Added

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 using applyToIDEA globally (#1186)
  • Remove spaces before primary constructor (paren-spacing) (#1207)
  • Fix false positive for delegated properties with a lambda argument (indent) (#1210)
  • 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 to 1.4!

0.42.1

06 Aug 16:50
Compare
Choose a tag to compare

[0.42.1] - 2021-08-06

Dot release to fix regressions in indent rule introduced in 0.42.0 release. Thanks to t-kameyama for the fixes!

Fixed

  • Fix false positive with delegated properties (indent) (#1189)
  • Fix false positive with lambda argument in super type entry (indent) (#1188)

0.42.0

29 Jul 15:39
Compare
Choose a tag to compare

Thank you to the following contributors for this release:

Added

  • SARIF output support (#1102)

Fixed

  • Remove needless blank lines in dot qualified expression (#1077)
  • Fix false positives for SpacingBetweenDeclarationsWithAnnotationsRule (#1125)
  • Fix false positive with eol comment (annotation-spacing) (#1124)
  • Fix KtLint dependency variant selection (#1114)
  • Fix false positive with 'by lazy {}' (indent) (#1162)
  • Fix false positive with value argument list has lambda (indent) (#764)
  • Fix false positive in lambda in dot qualified expression (argument-list-wrapping) (#1112)
  • Fix false positive with multiline expression with elvis operator in assignment (indent) (#1165)
  • Ignore backticks in imports for ordering purposes (import-ordering) (#1106)
  • Fix false positive with elvis operator and comment (chain-wrapping) (#1055)
  • Fix false negative in when conditions (chain-wrapping) (#1130)
  • Fix the Html reporter Chinese garbled (#1140)
  • Performance regression introduced in 0.41.0 (#1135)

Changed

  • Updated to dokka 1.4.32 (#1148)
  • Updated Kotlin to 1.5.20 version

0.41.0

16 Mar 17:02
0de86c8
Compare
Choose a tag to compare

[0.41.0] - 2021-03-16

Note: This release contains breaking changes to globs passed to ktlint via the command line. See (#999) and the README.

Thank you to t-kameyama and paul-dingemans for your contributions to this release!

Added

  • New ktlint_ignore_back_ticked_identifier EditorConfig option for max-line-length rule to ignore long method names inside backticks
    (primarily used in tests) (#1007)
  • Allow to add/replace loaded .editorconfig values via ExperimentalParams#editorConfigOverride (#1016)
  • ReporterProvider, LintError, RuleSetProvider now implement Serializable interface

Fixed

  • Incorrect indentation with multiple interfaces (#1003)
  • Empty line before primary constructor is not reported and formatted-out (#1004)
  • Fix '.editorconfig' generation for "import-ordering" rule (#1011)
  • Fix "filename" rule will not work when '.editorconfig' file is not found (#997)
  • EditorConfig generation for import-ordering (#1011)
  • Internal error (no-unused-imports) (#996)
  • Fix false positive when argument list is after multiline dot-qualified expression (argument-list-wrapping) (#893)
  • Fix indentation for function types after a newline (indent) (#918)
  • Don't remove the equals sign for a default argument (no-line-break-before-assignment) (#1039)
  • Fix internal error in no-unused-imports (#1040)
  • Fix false positives when declaration has tail comments (spacing-between-declarations-with-comments) (#1053)
  • Fix false positive after else keyword (argument-list-wrapping) (#1047)
  • Fix formatting with comments (colon-spacing) (#1057)
  • Fix IndexOutOfBoundsException in argument-list-wrapping-rule formatting file with many corrections (#1081)
  • Fix formatting in arguments (multiline-if-else) (#1079)
  • Fix experimental:annotation-spacing-rule autocorrection with comments
  • Migrate from klob dependency and fix negated globs passed to CLI are no longer worked (#999)
    Breaking: absolute paths globs will no longer work, check updated README

Changed

  • Update Gradle shadow plugin to 6.1.0 version
  • Align with Kotlin plugin on how alias pattern is represented for imports layout rule (#753)
  • Align with Kotlin plugin on how subpackages are represented (#753)
  • Deprecated custom kotlin_imports_layout EditorConfig property. Please use ij_kotlin_imports_layout to ensure
    that the Kotlin IDE plugin and ktlint use same imports layout (#753)
  • Deprecated idea and ascii shortcuts as the ij_kotlin_imports_layout property does not support those.
    Please check README on how to achieve those with patterns (#753)
  • Update Gradle to 6.8.3 version
  • Update Kotlin to 1.4.31 version. Fixes #1063.

0.40.0

04 Dec 20:50
765344a
Compare
Choose a tag to compare

[0.40.0] - 2020-12-04

Special thanks to t-kameyama for the huge number of bugfixes in this release!

Added

  • Initial implementation IDE integration via '.editorconfig' based on rules default values (#701)
  • CLI subcommand generateEditorConfig to generate '.editorconfig' content for Kotlin files (#701)
  • A new capability to generate baseline and run ktlint against it with --baseline cli option (#707)

Fixed

  • Do not report when semicolon is before annotation/comment/kdoc and lambda (#825)
  • Fix false positive when import directive has backticks and alias (#910)
  • @receiver annotations with parameters are not required to be on a separate line (#885)
  • Fix false positive "File annotations should be separated from file contents with a blank line" in kts files (#914)
  • Fix false positive Missing newline after "->" when when entry has a nested if/else block (#901)
  • Allow an inline block comment in argument-list-wrapping (#926)
  • Fix false positive for line-breaks inside lambdas in argument-list-wrapping (#861) (#870)
  • Fix wrong indentation inside an if-condition in argument-list-wrapping (#854) (#864)
  • Fix false positive for method after string template in argument-list-wrapping (#842) (#859)
  • Fix false positive when a comment is not between declarations in spacing-between-declarations-with-comments(#865)
  • Fix formatting with comments (multiline-if-else) (#944)
  • Do not insert unnecessary spacings inside multiline if-else condition (indent) (#871) (#900)
  • Correctly indent primary constructor parameters when class has multiline type parameter (parameter-list-wrapping) (#921) (#938)
  • Correctly indent property delegates (indent) (#939)
  • Fix false positive for semicolon between empty enum entry and member (no-semicolons) (#957)
  • Fix wrong indentation for class delegates (indent) (#960) (#963)
  • Fix wrong indentation in named arguments (indent) (#964)
  • Fix wrong indentation when a function has multiline type arguments (parameter-list-wrapping) (#965)
  • Fix false positive for spacing-between-declarations-with-annotations (#970)
  • Fix ParseException when an assigment contains comments (no-line-break-before-assignment) (#956)
  • Fix false positive when right brace is after a try-catch block (spacing-around-keyword) (#978)
  • Fix false positive for control flow with empty body (no-semicolons) (#955)
  • Fix incorrect indentation for multi-line call expressions in conditions (indent) (#959)
  • Fix false positive for trailing comma before right parentheses|bracket|angle (spacing-around-comma) (#975)
  • Fix ktlint CLI could skip checking some of explicetly passed files (#942)

Changed

  • 'import-ordering' now supports `.editorconfig' default value generation (#701)
  • Update Gradle to 6.7.1 version

0.39.0

14 Sep 20:40
cab38c4
Compare
Choose a tag to compare

Added

  • Add new applyToIDEA location for IDEA 2020.1.x and above on MacOs
  • Debug output: print loaded .editorconfig content
  • Extract argument-list-wrapping rule into experimental ruleset
  • Split annotation-spacing into separate experimental rule

Fixed

  • Do not enforce raw strings opening quote to be on a separate line (#711)
  • False negative with multiline type parameter list in function signature for parameter-list-wrapping(#680)
  • Alternative .editorconfig path is ignored on stdin input (#869)
  • False positive with semicolons before annotations/comments/kdoc (#825)
  • Do not report when string-template expression is a keyword (#883)
  • False positive for subclass imports in no-unused-imports (#845)
  • False positive for static java function imports in no-unused-imports (#872)
  • Missing signature for KtLint CLI artifact published to Github release (#895)
  • Crash in annotation rule (#868)
  • False-positive unused import violation (#902)

Changed

  • Ktlint object internal code cleanup
  • Deprecate some of public methods in Ktlint object that should not be exposed as public api
  • Update Kotlin to 1.4.10 version
  • Make RuleSet class open so it can be inherited

0.38.1

27 Aug 16:57
Compare
Choose a tag to compare

Minor release to support projects using mixed 1.3/1.4 Kotlin versions (e.g. Gradle plugins)

Changed

  • Compile with apiLevel = 1.3