Skip to content

Releases: detekt/detekt

v1.23.6

25 Mar 11:08
418f78b
Compare
Choose a tag to compare

1.23.6 - 2024-03-23

This is a point release for Detekt 1.23.0, where we added support for Kotlin 1.9.23 and fixed several bugs that got reported by the community.

Changelog
  • UselessPostfixExpression - Fix #7037 false positive postfix - #7084
  • Don't allow invalid Source Locations - #7030
  • UnusedPrivateClass: don't report if private classes are used for type conversion - #6995
  • RedundantSuspendModifier: do not report when the function has 'actual' modifier - #6951
  • Update dependency gradle to v8.7 - #7080
  • Update kotlin monorepo to v1.9.23 - #7027
  • Update dependency gradle to v8.6 - #6939
  • Update dependency com.android.tools.build:gradle to v8.3.1 - #7070
Contributors

We would like to thank the following contributors that made this release possible: @BraisGabin, @psuzn, @t-kameyama.

v1.23.5

31 Jan 14:41
ec1a13e
Compare
Choose a tag to compare

This is a point release for Detekt 1.23.0, where we added support for Kotlin 1.9.22 and fixed several bugs that
got reported by the community.

Notable Changes
  • Test Gradle plugin with AGP 8.2.0 - #6672
  • chore(deps): update dependency gradle to v8.5 - #6663
  • fix(deps): update kotlin monorepo to v1.9.22 - #6746
Changelog
  • Report rule's default severity in sarif backport - #6916
  • Add ignoreAnnotatedFunctions to TooManyFunctions - #6875
  • Fix by checking the existence of label in previous statements - #6671
  • Also check USELESS_ELVIS in UnreachableCode - #6624
  • Fix by adding last method call to the set - #6567
Housekeeping & Refactorings
  • Opt in to ExperimentalCompilerApi in all compilations in compiler-plugin - #6534
Contributors

We would like to thank the following contributors that made this release possible: @3flex, @TWiStErRob, @atulgpt, @matejdro

v1.23.4

26 Nov 11:50
fe4b3d5
Compare
Choose a tag to compare

1.23.4 - 2023-11-26

This is a point release for Detekt 1.23.0, where we added support for Kotlin 1.9.21 and fixed several bugs that
got reported by the community.

Notable Changes
  • fix(deps): update kotlin monorepo to v1.9.21 - #6642
  • fix(deps): update kotlin monorepo to v1.9.20 - #6572
Changelog
  • Update the ruleset regex to allow numbers - #6635
  • Show deprecation message - #6614
  • Add io.gitlab.arturbosch.detekt.generator.Main to the jar manifest - #6613
  • Don't report FunctionNaming when the function's name equals to the return type's name with type arguments - #6605
  • Fix issues related to kotlin-stdlib's Gradle module metadata in Kotlin 1.9.20 - #6590
  • MethodSignature - Add the condition of receiver should be null - #6570
  • Remove check for deprectated functions toUpperCase and toLowerCase - #6548
  • Fixes false positive of trailing whitespaces in kdoc - #6370
Dependency Updates
  • Update tested AGP version to 8.1.3 - #6610
  • Switch to kctfork for Kotlin compilation testing - #6589
Contributors

We would like to thank the following contributors that made this release possible: @3flex, @BraisGabin, @Gosunet, @atulgpt, @t-kameyama

v1.23.3

31 Oct 21:32
2f6a52a
Compare
Choose a tag to compare

1.23.3 - 2023-10-31

This is a point release for Detekt 1.23.0, where we added support for Kotlin 1.9.10 and fixed several bugs that
got reported by the community.

NOTE: This is a republishing of 1.23.2 which was accidentally published against Kotlin 1.9.0 instead of 1.9.10

Changelog
  • Consider deprecated rules as inactive when running allRules #6381
  • Fix inputstream leaking file descriptor in Gradle - #6519
  • ForbiddenMethodCall - Handle sequence of overridden methods - #6478
  • Function to return supported Kotlin version - #6472
  • Fix false negative IgnoredReturnValue with scope functions - #6446
  • UnconditionalJumpStatementInLoop: don't report a conditional break in a single body expression - #6443
  • Fix reporting unused imports at file level - #6390
  • OutdatedDocumentation - Detect param which private property documented as property - #6372
  • NullableToStringCall: fix false negative in lambda - #6352
  • Correctly set scheme for URIs in the SARIF report output - #6331
  • SleepInsteadOfDelay - Find the parent for suspend check - #6191
Dependency Updates
  • Update kotlin monorepo to v1.9.10 - #6423
  • Update dependency gradle to v8.4 - #6522
  • Update dependency gradle to v8.3 - #6406
  • Update com.android.tools.build to 8.1.1 - #6419
  • update dependency org.jetbrains.dokka to v1.9.10 - #6549
Contributors

We would like to thank the following contributors that made this release possible: @3flex, @arturbosch, @atulgpt, @kkocel, @marschwar, @pablobaxter, @t-kameyama

v1.23.2

31 Oct 11:52
f539a60
Compare
Choose a tag to compare

1.23.2 - 2023-10-29

NOTE: Please use version 1.23.3 instead - Version 1.23.2 was accidentally built against Kotlin 1.9.0 instead of 1.9.10
https://github.com/detekt/detekt/releases/tag/v1.23.3

This is a point release for Detekt 1.23.0, where we added support for Kotlin 1.9.10 and fixed several bugs that
got reported by the community.

Changelog
  • Consider deprecated rules as inactive when running allRules #6381
  • Fix inputstream leaking file descriptor in Gradle - #6519
  • ForbiddenMethodCall - Handle sequence of overridden methods - #6478
  • Function to return supported Kotlin version - #6472
  • Fix false negative IgnoredReturnValue with scope functions - #6446
  • UnconditionalJumpStatementInLoop: don't report a conditional break in a single body expression - #6443
  • Fix reporting unused imports at file level - #6390
  • OutdatedDocumentation - Detect param which private property documented as property - #6372
  • NullableToStringCall: fix false negative in lambda - #6352
  • Correctly set scheme for URIs in the SARIF report output - #6331
  • SleepInsteadOfDelay - Find the parent for suspend check - #6191
Dependency Updates
  • Update kotlin monorepo to v1.9.10 - #6423
  • Update dependency gradle to v8.4 - #6522
  • Update dependency gradle to v8.3 - #6406
  • Update com.android.tools.build to 8.1.1 - #6419
  • update dependency org.jetbrains.dokka to v1.9.10 - #6549
Contributors

We would like to thank the following contributors that made this release possible: @3flex, @arturbosch, @atulgpt, @kkocel, @marschwar, @pablobaxter, @t-kameyama

v1.23.1

30 Jul 09:58
c50ed69
Compare
Choose a tag to compare

1.23.1 - 2023-07-30

This is a point release for Detekt 1.23.0, where we added support for Kotlin 1.9.0 and fixed several bugs that
got reported by the community.

Notable Changes
  • Bumped Kotlin to v1.9.0 - #6258
  • Bumped KtLint to v0.50.0 - #6239
  • Updated CLI to reflect Java 20 support - #6277
Changelog
  • Add missing jdkHome and languageVersion properties to DetektCreateBaselineTask - #6284
  • Make InvalidRange aware of rangeUntil operator - #6264
  • MaxChainedCallsOnSameLine: don't count class references as chained calls - #6224
  • CanBeNonNullable: Fix false positive when property is defined after assignment - #6210
  • Add ..< and rangeTo in the ForEachOnRange rule - #6197
  • Don't report UseDataClass if class contains non-property parameters - #6173
  • Allow documenting public fun name when same private variable is present - #6165
  • Find range call using recursion - #6164
  • StringShouldBeRawString: Ignore replaceIndent and prependIndent - #6154
  • UnusedPrivateProperty: Fix false postive by ignoring data classes - #6151
  • PropertyUsedBeforeDeclaration: fix false positive in nested/inner class - #6139
Dependency Updates
  • Update dependency gradle to v8.2.1 - #6274
  • Switch to SLF4J 2.x - #6266
  • Update kotlin monorepo to v1.8.22 - #6192
Contributors

We would like to thank the following contributors that made this release possible: @3flex, @Goooler, @Hexcles, @PoisonedYouth, @TWiStErRob, @VirtualParticle, @atulgpt, @cortinico, @dzirbel, @eygraber, @marschwar, @rmarquis, @segunfamisa, @severn-everett, @t-kameyama

See all commit history here

v1.23.0

24 May 09:51
ad80630
Compare
Choose a tag to compare

We're so proud to announce the next upcoming stable release of detekt: 1.23.0 πŸš€
This release is coming with 25 new rules and much more.

We moved the detekt-compiler-plugin to the main repo, and you can now use it in your builds following the official documentation.

This release also marks the beginning of development of 2.x from the main branch! You can follow the progress here

We want to take the opportunity to thank our Sponsors and our Contributors for testing, bug reporting and helping us release this new version of Detekt. You're more than welcome to join our community on the #detekt channel on KotlinLang's Slack (you can get an invite here).

Notable Changes
  • This is the first version of Detekt that ships with the detekt-compiler-plugin. The Detekt Compiler plugin is still experimental, but we're moving it closer to Detekt to make it easier to integrate. From now on the compiler plugin will follow the same versioning schema as Detekt. We invite you to try it and provide feedback till we stabilize it. You can read more about it in the official documentation page - #5492
  • We added 25 new Rules to detekt
    • BracesOnIfStatements - #5700
    • BracesOnWhenStatements - #5838
    • CastNullableToNonNullableType - #5653
    • DoubleNegativeLambda - #5937
    • ForbiddenAnnotation - #5515
    • PropertyUsedBeforeDeclaration - #6062
    • StringShouldBeRawString - #5705
    • SuspendFunSwallowedCancellation - #5666
    • UnusedParameter - #5722
    • UnusedPrivateProperty - #5722
    • UseLet - #6091
    • UnnecessaryBracesAroundTrailingLambda - #6029
    • Plus the bump to KtLint 0.49.1 added the following rules to the detekt-formatting ruleset:
      • ClassName - #6037
      • EnumWrapping - #6028
      • FunctionName - #6037
      • IfElseBracing - #6028
      • IfElseWrapping - #6028
      • MultilineExpressionWrapping - #6028
      • NoBlankLineInList - #6028
      • NoConsecutiveComments - #6028
      • NoEmptyFirstLineInClassBody - #6028
      • NoSingleLineBlockCommentRule - #6104
      • ParameterWrapping - #6028
      • PropertyName - #6037
      • PropertyWrapping - #6028
      • StringTemplateIndent - #6028
      • TryCatchFinallySpacing - #6028
  • Notable changes to existing rules:
    • UnnecessaryAbstractClass now only runs with type resolution - #5829
    • UnusedPrivateMember has been refactored with some of its logic moved to UnusedParameter and UnusedPrivateProperty - #5722
    • Removed the ignoreOverridden config from BooleanPropertyNaming, ConstructorParameterNaming, FunctionNaming, VariableNaming and FunctionParameterNaming as not useful for those rules - #5718
    • Added ignoredSubjectTypes to rule ElseCaseInsteadOfExhaustiveWhen to specify types that should be ignored by the rule (#5623) - #5634
    • Added allowOperators to rule DataClassContainsFunctions - #5658
    • MandatoryBracesIfStatements has been removed in favor of BracesOnIfStatements - #5700
    • Added ignoreWhenContainingVariableDeclaration to UseIfInsteadOfWhen to ignore captured variables - #5681
    • Several rules in the detekt-formatting ruleset now accepts an indentSize parameter (see the full list here).
    • We followed the KtLint decisions on turning on some rules by default, so several rules in the detekt-formatting ruleset are now turned on by default (see the full list here).
  • We added support for Gradle's Worker API inside Detekt Gradle Plugin, for faster execution on bigger projects. - #4128
  • We fixed the includes/excludes logic on the config file as they were overriding each other - #5782
  • We fully removed support for Spek from detekt-test-utils. The recommended testing framework is JUnit - #5785
  • The minimum supported Gradle version is now v6.8.3 - #5616
  • This version of detekt is built with Gradle v8.1, AGP 8.0.1, Kotlin 1.8.21 and KtLint 0.49.1 (see #5893 #5723 #5877 #6028 #6043 #5995 #5996)
  • We now added a Code of Conduct to our repo. Please read it and follow it when interacting with our community on our channels.
Changelog
  • SerialVersionUIDInSerializableClass - Update the error location - #6114
  • Reduce LoopWithTooManyJumpStatements finding scope - #6110
  • Add alias for SuspendFunWithCoroutineScopeReceiver - #6089
  • CastNullableToNonNullableType - Check the SimpleType instead of typeElement - #6071
  • Update plugin com.gradle.enterprise to v3.13.1 - #6069
  • CanBeNonNullable: Check parent condition for checking if nullability info is used or not - #6064
  • Add configuration to add alternate trimming methods - #6063
  • Check if property is documented at class header - #6061
  • OutdatedDocumentation - Check if only public property is documented - #6057
  • UnnecessaryLet: fix false positive in call chains - #6052
  • Add comments with a list of regexes to ForbiddenComment - #5981
  • Fix incomplete requireRootInDeclaration check in InvalidPackageDeclaration - #6045
  • BracesOnWhenStatements: fix false positive for necessary braces - #6042
  • Fix redundant ClassOrdering violations using maximum increasing section - #6003
  • UseIsNullOrEmpty: fix false negative with chained call - #6027
  • Create docs for Gradle Worker API - #6016
  • Compile compiler plugin against kotlin-compiler-embeddable - #6012
  • Update intro.mdx to use setFrom() on detekt config - #6010
  • Use detekt-versions.properties instead of versions.properties - #6006
  • Implement parentPath accessor in concrete config implementations - #6002
  • Increase ALIASES_LIMIT to 100 for YamlConfig - #5986
  • Fix elvis to +/- case in case UnnecessaryParentheses when precedence is unclear - #5983
  • jdkHome as @internal - #5978
  • Fix broken POM file for detetk-compiler-plugin - #5971
  • Fix broken publishToMavenLocal - #5970
  • Add allowOmitUnit to rule LibraryCodeMustSpecifyReturnType - #5861
  • Remove dependency that creates a cycle. - [#5777](https://github.com/de...
Read more

v1.23.0-RC3

29 Apr 18:29
85dc01b
Compare
Choose a tag to compare
v1.23.0-RC3 Pre-release
Pre-release

1.23.0-RC3 - 2023-04-29

Notable Changes
  • This is the first version of Detekt that ships with the detekt-compiler-plugin. The Detekt Compiler plugin is still experimental but we're moving it closer to Detekt to make it easier to integrate. From now on the compiler plugin will follow the same versioning schema as Detekt. We invite you to try it and provide feedback till we stabilize it. - #5492
  • We added 20 new Rules to detekt
    • BracesOnIfStatements - #5700
    • BracesOnWhenStatements - #5838
    • CastNullableToNonNullableType - #5653
    • DoubleNegativeLambda - #5937
    • ForbiddenAnnotation - #5515
    • StringShouldBeRawString - #5705
    • SuspendFunSwallowedCancellation - #5666
    • UnusedParameter - #5722
    • UnusedPrivateProperty - #5722
    • Plus the bump to KtLint 0.49.0 added the following rules to the detekt-formatting ruleset:
      • EnumWrapping - #6028
      • IfElseBracing - #6028
      • IfElseWrapping - #6028
      • MultilineExpressionWrapping - #6028
      • NoBlankLineInList - #6028
      • NoConsecutiveComments - #6028
      • NoEmptyFirstLineInClassBody - #6028
      • ParameterWrapping - #6028
      • PropertyWrapping - #6028
      • StringTemplateIndent - #6028
      • TryCatchFinallySpacing - #6028
  • Notable changes to existing rules:
    • UnnecessaryAbstractClass now only runs with type resolution - #5829
    • UnusedPrivateMember has been refactored with some of its logic moved to UnusedParameter and UnusedPrivateProperty - #5722
    • Removed the ignoreOverridden config from BooleanPropertyNaming, ConstructorParameterNaming, FunctionNaming, VariableNaming and FunctionParameterNaming as not useful for those rules - #5718
    • Added ignoredSubjectTypes to rule ElseCaseInsteadOfExhaustiveWhen to specify types that should be ignored by the rule (#5623) - #5634
    • Added allowOperators to rule DataClassContainsFunctions - #5658
    • MandatoryBracesIfStatements has been removed in favor of BracesOnIfStatements - #5700
    • Added ignoreWhenContainingVariableDeclaration to UseIfInsteadOfWhen to ignore captured variables - #5681
    • Several rules in the detekt-formatting ruleset now accepts an indentSize parameter (see the full list here).
    • We followed the KtLint decisions on turning on some rules by default, so several rules in the detekt-formatting ruleset are now turned on by default (see the full list here).
  • We added support for Gradle's Worker API inside Detekt Gradle Plugin, for faster execution on bigger projects. - #4128
  • We fixed the includes/excludes logic on the config file as they were overriding each other - #5782
  • We fully removed support for Spek from detekt-test-utils. The recommended testing framework is JUnit - #5785
  • The minimum supported Gradle version is now v6.8.3 - #5616
  • This version of detekt is built with Gradle v8.0.2, AGP 8.0.0, Kotlin 1.8.21 and KtLint 0.49.0 (see #5893 #5723 #5877 #6028 #6043 #5995)
  • We now added a Code of Conduct to our repo. Please read it and follow it when interacting with our community on our channels.
Changelog
  • Fix incomplete requireRootInDeclaration check in InvalidPackageDeclaration - #6045
  • BracesOnWhenStatements: fix false positive for necessary braces - #6042
  • Fix redundant ClassOrdering violations using maximum increasing section - #6003
  • UseIsNullOrEmpty: fix false negative with chained call - #6027
  • Create docs for Gradle Worker API - #6016
  • Compile compiler plugin against kotlin-compiler-embeddable - #6012
  • Update intro.mdx to use setFrom() on detekt config - #6010
  • Use detekt-versions.properties instead of versions.properties - #6006
  • Implement parentPath accessor in concrete config implementations - #6002
  • Increase ALIASES_LIMIT to 100 for YamlConfig - #5986
  • Fix elvis to +/- case in case UnnecessaryParentheses when precedence is unclear - #5983
  • jdkHome as @internal - #5978
  • Fix broken POM file for detetk-compiler-plugin - #5971
  • Fix broken publishToMavenLocal - #5970
  • Add allowOmitUnit to rule LibraryCodeMustSpecifyReturnType - #5861
  • Remove dependency that creates a cycle. - #5777
  • Update dependency org.jetbrains:annotations to v24 - #5969
  • Update github/codeql-action digest to 8c8d71d - #5966
  • Add functions to ExitOutsideMain rule - #5963
  • Update README.md - #5954
  • Prevent import statements from counting as references for UnusedPrivateProperty - #5942
  • Fix ExpressionBodySyntax not checking property getters/setters - #5938
  • Improve correctness of UnusedPrivateProperty - #5935
  • Fix documentation for deprecated 'reports' object (Issue #5908) - #5924
  • Print file path report as link file - #5921
  • "detekt" or "Detekt" - #5898
  • Update JSON schema URL - #5881
  • Add support for local suppression inside formatting - #5876
  • Fix checkExhaustiveness for formatting and third party rules - #5869
  • Allow newline style for MaxChainedCallsOnSameLine - #5865
  • Declare inputs and outputs to support incremental build for testPluginKotlinc - #5862
  • Use code syntax for Unit for ImplicitUnitReturnType rule - #5857
  • MatchingDeclarationName. KtFilesSpec also remove .common.kt suffix from kotlin files - #5851
  • Fix double mutability issues with Gradle plugin's use of ConfigurableFileCollection - #5850
  • MagicNumber - Make ignoreNamedArgument catch more complex expression - #5837
  • Exclude super call when generating guard clauses - #5835
  • Enable test retry for all our modules - #5825
  • Stop configuring report merge tasks while configuring Detekt tasks - #5813
  • FunctionMatcher support for fully qualified function names - #5812
  • Boy Scout - #5808
  • Simplify TestConfig usages - #5801
  • Reduce configuration of UnusedPrivateMember's split rules - #5800
  • Force SerialVerionUID to be private - #5798
  • Exclude the KMP test folders for android - #5797
  • Add aliases for PackageNaming and Inv...
Read more

v1.23.0-RC2

23 Apr 18:56
b54e5c8
Compare
Choose a tag to compare
v1.23.0-RC2 Pre-release
Pre-release

1.23.0-RC2 - 2023-04-23

Notable Changes
  • This is the first version of Detekt that ships with the detekt-compiler-plugin. The Detekt Compiler plugin is still experimental but we're moving it closer to Detekt to make it easier to integrate. From now on the compiler plugin will follow the same versioning schema as Detekt. We invite you to try it and provide feedback till we stabilize it. - #5492
  • We added 20 new Rules to detekt
    • BracesOnIfStatements - #5700
    • BracesOnWhenStatements - #5838
    • CastNullableToNonNullableType - #5653
    • DoubleNegativeLambda - #5937
    • ForbiddenAnnotation - #5515
    • StringShouldBeRawString - #5705
    • SuspendFunSwallowedCancellation - #5666
    • UnusedParameter - #5722
    • UnusedPrivateProperty - #5722
    • Plus the bump to KtLint 0.49.0 added the following rules to the detekt-formatting ruleset:
      • EnumWrapping - #6028
      • IfElseBracing - #6028
      • IfElseWrapping - #6028
      • MultilineExpressionWrapping - #6028
      • NoBlankLineInList - #6028
      • NoConsecutiveComments - #6028
      • NoEmptyFirstLineInClassBody - #6028
      • ParameterWrapping - #6028
      • PropertyWrapping - #6028
      • StringTemplateIndent - #6028
      • TryCatchFinallySpacing - #6028
  • Notable changes to existing rules:
    • UnnecessaryAbstractClass now only runs with type resolution - #5829
    • UnusedPrivateMember has been refactored with some of its logic moved to UnusedParameter and UnusedPrivateProperty - #5722
    • Removed the ignoreOverridden config from BooleanPropertyNaming, ConstructorParameterNaming, FunctionNaming, VariableNaming and FunctionParameterNaming as not useful for those rules - #5718
    • Added ignoredSubjectTypes to rule ElseCaseInsteadOfExhaustiveWhen to specify types that should be ignored by the rule (#5623) - #5634
    • Added allowOperators to rule DataClassContainsFunctions - #5658
    • MandatoryBracesIfStatements has been removed in favor of BracesOnIfStatements - #5700
    • Added ignoreWhenContainingVariableDeclaration to UseIfInsteadOfWhen to ignore captured variables - #5681
    • Several rules in the detekt-formatting ruleset now accepts an indentSize parameter (see the full list here).
    • We followed the KtLint decisions on turning on some rules by default, so several rules in the detekt-formatting ruleset are now turned on by default (see the full list here).
  • We added support for Gradle's Worker API inside Detekt Gradle Plugin, for faster execution on bigger projects. - #4128
  • We fixed the includes/excludes logic on the config file as they were overriding each other - #5782
  • We fully removed support for Spek from detekt-test-utils. The recommended testing framework is JUnit - #5785
  • The minimum supported Gradle version is now v6.8.3 - #5616
  • This version of detekt is built with Gradle v8.0.2, AGP 7.4.2, Kotlin 1.8.20 and KtLint 0.49.0 (see #5893 #5723 #5877 #6028)
Changelog
  • UseIsNullOrEmpty: fix false negative with chained call - #6027
  • Create docs for Gradle Worker API - #6016
  • Compile compiler plugin against kotlin-compiler-embeddable - #6012
  • Update intro.mdx to use setFrom() on detekt config - #6010
  • Use detekt-versions.properties instead of versions.properties - #6006
  • Implement parentPath accessor in concrete config implementations - #6002
  • Increase ALIASES_LIMIT to 100 for YamlConfig - #5986
  • Fix elvis to +/- case in case UnnecessaryParentheses when precedence is unclear - #5983
  • jdkHome as @Internal - #5978
  • Fix broken POM file for detetk-compiler-plugin - #5971
  • Fix broken publishToMavenLocal - #5970
  • Add allowOmitUnit to rule LibraryCodeMustSpecifyReturnType - #5861
  • Remove dependency that creates a cycle. - #5777
  • Update dependency org.jetbrains:annotations to v24 - #5969
  • Update github/codeql-action digest to 8c8d71d - #5966
  • Add functions to ExitOutsideMain rule - #5963
  • Update README.md - #5954
  • Prevent import statements from counting as references for UnusedPrivateProperty - #5942
  • Fix ExpressionBodySyntax not checking property getters/setters - #5938
  • Improve correctness of UnusedPrivateProperty - #5935
  • Fix documentation for deprecated 'reports' object (Issue #5908) - #5924
  • Print file path report as link file - #5921
  • "detekt" or "Detekt" - #5898
  • Update JSON schema URL - #5881
  • Add support for local suppression inside formatting - #5876
  • Fix checkExhaustiveness for formatting and third party rules - #5869
  • Allow newline style for MaxChainedCallsOnSameLine - #5865
  • Declare inputs and outputs to support incremental build for testPluginKotlinc - #5862
  • Use code syntax for Unit for ImplicitUnitReturnType rule - #5857
  • MatchingDeclarationName. KtFilesSpec also remove .common.kt suffix from kotlin files - #5851
  • Fix double mutability issues with Gradle plugin's use of ConfigurableFileCollection - #5850
  • MagicNumber - Make ignoreNamedArgument catch more complex expression - #5837
  • Exclude super call when generating guard clauses - #5835
  • Enable test retry for all our modules - #5825
  • Stop configuring report merge tasks while configuring Detekt tasks - #5813
  • FunctionMatcher support for fully qualified function names - #5812
  • Boy Scout - #5808
  • Simplify TestConfig usages - #5801
  • Reduce configuration of UnusedPrivateMember's split rules - #5800
  • Force SerialVerionUID to be private - #5798
  • Exclude the KMP test folders for android - #5797
  • Add aliases for PackageNaming and InvalidPackageDeclaration - #5795
  • Forbid using Jupiter Kotlin assertions - #5794
  • ModifierOrder: fix false positive with block comments - #5791
  • Fixed ProtectedMemberInFinalClass rule reporting valid JVM finalize - #5788
  • Remove unnecessary usage of BeforeAll in tests - #5781
  • Run Kotlin compiler plugin CLI test as part of standard build - [#5766](https://gith...
Read more

v1.23.0-RC1

07 Apr 10:19
88ceb96
Compare
Choose a tag to compare
v1.23.0-RC1 Pre-release
Pre-release

1.23.0-RC1 - 2023-04-06

Notable Changes
  • This is the first version of detekt that ships with the detekt-compiler-plugin. From now on the compiler plugin will follow the same versioning schema as detekt. While still experimental, we invite you to try it and provide feedback till we stabilize it. - #5492
  • We added 8 new Rules to detekt
    • BracesOnIfStatements - #5700
    • CastNullableToNonNullableType - #5653
    • DoubleNegativeLambda - #5937
    • ForbiddenAnnotation - #5515
    • StringShouldBeRawString - #5705
    • SuspendFunSwallowedCancellation - #5666
    • UnusedParameter - #5722
    • UnusedPrivateProperty - #5722
  • Notable changes to existing rules:
    • UnnecessaryAbstractClass now only runs with type resolution - #5829
    • UnusedPrivateMember has been refactored with some of its logic moved to UnusedParameter and UnusedPrivateProperty - #5722
    • Removed the ignoreOverridden config from BooleanPropertyNaming, ConstructorParameterNaming, FunctionNaming, VariableNaming and FunctionParameterNaming as not useful for those rules - #5718
    • Added ignoredSubjectTypes to rule ElseCaseInsteadOfExhaustiveWhen to specify types that should be ignored by the rule (#5623) - #5634
    • Added allowOperators to rule DataClassContainsFunctions - #5658
    • MandatoryBracesIfStatements has been removed in favor of BracesOnIfStatements - #5700
    • Added ignoreWhenContainingVariableDeclaration to UseIfInsteadOfWhen to ignore captured variables - #5681
  • We added support for Gradle's Worker API inside Detekt Gradle Plugin, for faster execution on bigger projects. - #4128
  • We fixed the includes/excludes logic on the config file as they were overriding each other - #5782
  • We fully removed support for Spek from detekt-test-utils. The recommended testing framework is JUnit - #5785
  • The minimum supported Gradle version is now v6.8.3 - #5616
  • This version of detekt is built with Gradle v8.0.2, AGP 7.4.2, Kotlin 1.8.20 and KtLint 0.48.2 (see #5893 #5723 #5877)
Changelog
  • Update dependency org.jetbrains:annotations to v24 - #5969
  • Update github/codeql-action digest to 8c8d71d - #5966
  • Add functions to ExitOutsideMain rule - #5963
  • Update README.md - #5954
  • Prevent import statements from counting as references for UnusedPrivateProperty - #5942
  • Fix ExpressionBodySyntax not checking property getters/setters - #5938
  • Improve correctness of UnusedPrivateProperty - #5935
  • Fix documentation for deprecated 'reports' object (Issue #5908) - #5924
  • Print file path report as link file - #5921
  • "detekt" or "Detekt" - #5898
  • Update JSON schema URL - #5881
  • Add support for local suppression inside formatting - #5876
  • Fix checkExhaustiveness for formatting and third party rules - #5869
  • Allow newline style for MaxChainedCallsOnSameLine - #5865
  • Declare inputs and outputs to support incremental build for testPluginKotlinc - #5862
  • Use code syntax for Unit for ImplicitUnitReturnType rule - #5857
  • MatchingDeclarationName. KtFilesSpec also remove .common.kt suffix from kotlin files - #5851
  • Fix double mutability issues with Gradle plugin's use of ConfigurableFileCollection - #5850
  • MagicNumber - Make ignoreNamedArgument catch more complex expression - #5837
  • Exclude super call when generating guard clauses - #5835
  • Enable test retry for all our modules - #5825
  • Stop configuring report merge tasks while configuring Detekt tasks - #5813
  • FunctionMatcher support for fully qualified function names - #5812
  • Boy Scout - #5808
  • Simplify TestConfig usages - #5801
  • Reduce configuration of UnusedPrivateMember's split rules - #5800
  • Force SerialVerionUID to be private - #5798
  • Exclude the KMP test folders for android - #5797
  • Add aliases for PackageNaming and InvalidPackageDeclaration - #5795
  • Forbid using Jupiter Kotlin assertions - #5794
  • ModifierOrder: fix false positive with block comments - #5791
  • Fixed ProtectedMemberInFinalClass rule reporting valid JVM finalize - #5788
  • Remove unnecessary usage of BeforeAll in tests - #5781
  • Run Kotlin compiler plugin CLI test as part of standard build - #5766
  • Refactor to remove java.util.Array* imports - #5761
  • Replace java.util.Stack with Kotlin's ArrayDeque implementation - #5760
  • Replace java.time.Duration with kotlin.time.Duration - #5759
  • Add NixOS installation method to doc - #5757
  • Remove & forbid usage of java.util.stream - #5756
  • Use stdlib functions for file & path operations - #5754
  • Enable UnnecessaryBackticks in detekt project - #5753
  • Update docusaurus monorepo to v2.3.1 - #5752
  • Resolve runtime classpaths consistently with compile classpaths - #5730
  • Exclude new Kotlin Test directories in default config - #5727
  • Fail when unexpected version of kotlin-compiler-embeddable is on runtime classpath - #5726
  • Fix IgnoredReturnValue rule crash in parallel mode - #5724
  • Use name that return name after backticks - #5719
  • UnusedPrivateMember - Fix false positive in case of invoke operator - #5717
  • Fix false positive for CanBeNonNullable rule - #5714
  • IgnoredReturnValue: fix false negative when annotation is on the package - #5706
  • Check Thread.sleep for block expression - #5699
  • Fix false positive of in UnnecessaryParentheses - #5684
  • Fix url and kotlin reference support in kdoc - #5683
  • Add config for variable expression in when - #5681
  • Enable NoSemicolons rule - #5663
  • Use correct resolvable/consumable flags on detekt's configurations - #5657
  • Prepare for Gradle 8 - #5656
  • ExplicitCollectionElementAccessMethod rule update - #5654
  • Cast nullable to non nullable type - #5653
  • Enable verbose mode for Codecov GH Action - #5652
  • Fail build when issues found with JVM target compatibility of related compile tasks - #5651
  • Don't silently use Kotlin compiler fallback strategy - #5650
  • Documentation tweaks - #5639
  • Have consistent compile-test-snippets between project and system prope...
Read more