Skip to content

Releases: detekt/detekt

v2.0.0-alpha.3

24 Apr 23:10
162d9c9

Choose a tag to compare

v2.0.0-alpha.3 Pre-release
Pre-release

2.0.0-alpha.3 - 2026-04-24

This is an alpha release of Detekt 2.0.0. Is built against Kotlin 2.3.21, Gradle 9.3.1, AGP 9.1.1 and is tested against JDK 25.

As of this release, the workaround of disabling the new DSL and built-in Kotlin via gradle.properties for AGP 9.x projects is no longer required.

Notable Changes

  • Bump Kotlin to v2.3.21 - #9272
  • Bump AGP to v9.1.1 - #9244
  • Add support for AGP 9 built-in Kotlin - #9100
  • Rule UnnecessaryFullyQualifiedName now requires full mode to run - #9061
  • Add new rule: UnnecessaryRun - #7428

Breaking Changes

  • Remove DetektProgressListener from our public API - #9221
  • Remove InvalidConfigurationError from our public API - #8994

Changelog

  • UseOrEmpty - Fix AA type leaks - #9263
  • ForbiddenNamedParam - Fix AA type leaks - #9262
  • UnusedVariable - Fix AA type leaks - #9260
  • UnnecessaryNotNullOperator - Fix AA type leaks - #9259
  • Deprecation - Fix AA type leaks - #9258
  • NestedScopeFunctions - Fix AA type leaks - #9257
  • Suggest similar property names for misspelled config properties - #9250
  • MagicNumber DslGradleRunner test fix - #9245
  • Don't forbid use of java.lang.annotation.Inherited annotation by default - #9224
  • Fixes #9017 - false positive with name collisions - #9223
  • Optimize how we get project statistics - #9217
  • Rename ProjectComplexityProcessor to ProjectCyclomaticComplexityProcessor - #9213
  • Add ignoreClass config to MissingUseCall - #9205
  • Remove LicenseHeaderLoaderExtension from the list of processors - #9204
  • cli: Improve messages and exception types of --report - #9203
  • Validate --classpath with JCommander - #9202
  • System-dependent path separators - #9199
  • Do not report IgnoredReturnValue on lambda invocation that returns Unit - #9192
  • Point to valOrVarKeyword for reporting the issue - #9191
  • Check Throwable class - #9190
  • Do no report when parent has class - #9189
  • Add support of indent_style in ktlint Indention rule - #9180
  • Add severity to different md, html reports - #9167
  • Check local class which can't be converted to interface - #9166
  • Inline yaml config in the test - #9154
  • Tests: Don't check compilation errors with compile-test-snippets=false - #9153
  • YamlConfig.load returns YamlConfig instead of Config - #9151
  • Generator: The --config flag value should be a directory or it shouldn't exist - #9131
  • Fix broken test JvmSpec - #9129
  • Performance improvement - consolidated KaLibraryModules - #9127
  • Print cli arguments with debug = true - #9126
  • MissingUseCall: Fix false negative for checkNotNull/requireNotNull - #9123
  • Make functionalTest os dependent - #9098
  • Fix false positive for ExplicitCollectionElementAccessMethod with lambdas - #9096
  • Expose only LanguageVersionSettings instead of CompilerConfiguration - #9092
  • Remove project from EnvironmentFacade - #9089
  • Ensure that AA knows types of excluded files - #9082
  • Updated to using Gradle's lazy APIs - #9080
  • Simplify KotlinEnvironmentContainer - #9077
  • Reduce calls to analyze in MapGetWithNotNullAssertionOperator - #9067
  • Report MapGetWithNonNullAssertionOperator violations on MutableMaps - #9065
  • Fix ExplicitCollectionElementAccessMethodSpec for unresolved types - #9059
  • Allow external dependencies in analysis tests - #9051
  • Improve exception handling on YamlConfig - #9048
  • Remove YamlConfig.load(Path) - #9047
  • Refine AbstractClassCanBeInterface treatment of open properties - #9043
  • rename Claude.md to CLAUDE.md for cross-platform compatibility - #9033
  • Clarify CommentOverPrivate... renames in detekt 2 - #9025
  • Exclude generated sources from default sources - #9019
  • fix(UnusedVariable): recognize destructured lambda parameters as used - #9015
  • Replace Lifecycle.bindingProvider by a private function and rename it to validateClasspath - #9003
  • Remove unnecessary interface - #9002
  • Remove dependecy of :detekt-test with :detekt-core - #8987
  • Move yamlConfig functions to :detekt-core - #8976
  • Only print paths of reports when detektion fails - #8560

Dependency Updates

  • Bump Kotlin 2.3.20 - #8959
  • Bump AGP to v9.1.0 - #9110
  • Add coroutinesCore Intellij to the classpath - #9176
  • chore: update Kotlin 2.3.20-RC2 β†’ 2.3.20 - #9160
  • chore(deps): update plugin dev.drewhamilton.poko to v0.22.0 - #9159
  • Make KotlinAnalysisApiEngine AutoCloseable - #9144
  • fix(deps): update kotlin monorepo to v2.3.10 - #9037

Housekeeping & Refactorings

  • Don't use paths to read files from resources/ - #9175
  • Remove unnecessary test nesting - #9150

Contributors

We would like to thank the following contributors that made this release possible: @3flex, @BraisGabin, @FletchMcKee, @TWiStErRob, @UnguidedFreedom, @atulgpt, @cortinico, @fru1tworld, @jonapoul, @matejdro, @mirkoalicastro, @picklebento, @t-kameyama, @travisMiehm

v2.0.0-alpha.2

27 Jan 01:06
7508295

Choose a tag to compare

v2.0.0-alpha.2 Pre-release
Pre-release

2.0.0-alpha.2 - 2026-01-27

This is an alpha release of Detekt 2.0.0. It's built against Kotlin 2.3.0, Gradle 9.3.0, AGP 9.0.0 and is tested against JDK 25.

Please note that in order for this alpha of Detekt to run in an AGP 9.0.0 project, you will need to disable the new DSL and built-in Kotlin by adding these properties to gradle.properties:

android.newDsl=false
android.builtInKotlin=false

Further updates on builtInKotlin support in Detekt Gradle Plugin will be available here.

Notable Changes

  • Bump Kotlin to 2.3.0 - #8743
  • Bump Gradle to 9.3.0 - #8982
  • Bump AGP to 9 - #8553
  • Bump minimum AGP to 8.2.2 - #8931
  • Enable rules by default that are now standard in ktlint 1.8.0 - #8849
  • Bump KtLint to v1.8.0 - #8843
  • New ktlint Rule: ThenSpacingRule - #8850
  • New Rule: UnnecessaryInitOnArray - #8784
  • New Rule: UnnecessaryFullyQualifiedName - #8917

Breaking Changes

  • Rename documentation to comments - #8889
  • Rename empty to emptyblocks - #8888
  • Rename bugs rules to potentialbugs - #8887
  • Remove UnnecessaryAnnotationUseSiteTarget rule - #8861
  • Rename RuleSet.Id to RuleSetId - #8810
  • Rename rule CommentOverPrivateMethod to DocumentationOverPrivateMethod - #8778
  • Refactor AbsentOrWrongFileLicense - #8969
  • Compile DGP against kotlin-plugin-api only not KGP itself - #8756
  • Change configuration options for ForbiddenImport rule - #8747

Changelog

  • fix(UnusedImport): detect named companion objects correctly - #9005
  • Remove unnecessary tests - #8985
  • Pass the correct type to TestConfig - #8984
  • Remove special case for active at TestConfig - #8983
  • TestConfig over yamlConfigFromContent - #8974
  • Skip underscore placeholders for unused variables on NonNameShadowing rule (#8962) - #8965
  • docs: clarify function type handling in ForbiddenMethodCall - #8964
  • Check if there suspend function in try block before reporting - #8950
  • Fix SubpluginArtifact coordinates for dev.detekt:detekt-compiler-plugin - #8938
  • Handle case when inner is required as parent is inner - #8927
  • Add paragraph on AI contributed PR - #8922
  • Handle case when reference is provided - #8895
  • Don't enable rules by default that are only enabled when using ktlint_official code style - #8845
  • Filter operations which are terminal as they don't continue sequence - #8804
  • Add modality check from analysis api - #8803
  • Update getPropertyAccessorSymbol method to correctly return getter … - #8787
  • Fix #8160 - Exclude classes in NamedArguments rule - #8782
  • remove suppression - #8736
  • Remove "V2" from DGP plugin display name and description - #8628

Dependency Updates

  • Bump Kotlin to v2.2.21 - #8807
  • Bump AGP to 8.13.2 - #8914
  • Add transitive assertj dep of assertj core in detekt-test-assertj - #8923
  • chore(deps): update gradle to v9.2.1 - #8868
  • fix(deps): update dependency com.android.tools.build:gradle to v8.13.1 - #8838
  • chore(deps): update gradle to v9.2.0 - #8820

Housekeeping & Refactorings

  • Bump min Node version for website build - #8875
  • Enable ValueArgumentComment for detekt project - #8854

Contributors

We would like to thank the following contributors that made this release possible: @3flex, @BraisGabin, @atulgpt, @chao2zhang, @cortinico, @csbiy, @forketyfork, @marschwar, @rschattauer

v2.0.0-alpha.1

21 Oct 18:14
c33d239

Choose a tag to compare

v2.0.0-alpha.1 Pre-release
Pre-release

2.0.0-alpha.1 - 2025-10-21

This is an alpha release of Detekt 2.0.0. Is built against Kotlin 2.2.20, Gradle 9.1.0 and is tested against JDK 25.

Full changelog is available here: https://detekt.dev/changelog-2.0.0

Requirements

Detekt Version Gradle Kotlin AGP Java Target Level JDK Max Version
2.0.0-alpha.1 9.1.0 2.2.20 8.13.0 1.8 25

Contributors

We would like to thank the following contributors that made this release possible: @3flex @BraisGabin @Copilot @CziSKY @atulgpt @jonapoul @marschwar @mikaelreiersolmoen

See all issues at: 2.0.0

v2.0.0-alpha.0

04 Sep 13:40
4298b32

Choose a tag to compare

v2.0.0-alpha.0 Pre-release
Pre-release

2.0.0-alpha.0 - 2025-09-04

This is an initial alpha release of Detekt 2.0.0.

Full changelog is available here: https://detekt.dev/changelog-2.0.0

Requirements

Detekt Version Gradle Kotlin AGP Java Target Level JDK Max Version
2.0.0-alpha.0 8.13.0 2.2.10 8.13.0 1.8 21

Contributors

We would like to thank the following contributors that made this release possible: @3flex, @BraisGabin, @ErdoganSeref, @GeorgCantor, @Goooler, @Gosunet, @Hexcles, @JordanLongstaff, @LeoColman, @MaximSysoev, @Nava2, @PStrelchenko, @PhilippNowak96, @PoisonedYouth, @TWiStErRob, @VirtualParticle, @VovaStelmashchuk, @arturbosch, @atulgpt, @baseballyama, @bmuschko, @bomiyr, @bric3, @brunoescalona, @chao2zhang, @cortinico, @dzirbel, @eygraber, @hirokinoue, @hudson155, @ilim-ablyaev, @inorichi, @kkocel, @lexa-diky, @marschwar, @matejdro, @mdemianova, @mgroth0, @neugartf, @noar-t, @pablobaxter, @paolorotolo, @psuzn, @rhazarian, @rmarquis, @robholmes, @schalkms, @segunfamisa, @severn-everett, @stellingsimon, @t-kameyama, @tfcporciuncula, @xouabita.

See all issues at: 2.0.0

v1.23.8

21 Feb 14:59
0462637

Choose a tag to compare

1.23.8 - 2025-02-20

This is a point release for Detekt 1.23.0, built against Kotlin 2.0.21, with fixes for several bugs that got reported by the community.

Notable Changes
  • fix(deps): Update kotlin to 2.0.21 - #7580
  • fix(deps): Update AGP to v8.8.1 - #7879
  • fix(deps): update Gradle to v8.12.1 - #7780
Changelog
  • UseDataClass: do not report on expect classes - #7857
  • Fix InjectDispatcher false positives - #7797
  • [UnnecessaryParentheses] Allow float/double without integer part - #7751
  • Fix ThrowingExceptionsWithoutMessageOrCause false positive - #7715
  • Issue #7634: Make UndocumentedPublicClass configurable to flag `com… - #7635
  • Fix redundant empty tags in baseline XML - #7625
  • MatchingDeclarationName now supports platofrm suffixes - #6426
Contributors

We would like to thank the following contributors that made this release possible: @BraisGabin, @JordanLongstaff, @Nava2, @atulgpt, @eygraber, @lexa-diky, @t-kameyama

v1.23.7

08 Sep 17:08
f951808

Choose a tag to compare

1.23.7 - 2024-09-08

This is a point release for Detekt 1.23.0, built against Kotlin 2.0.10, with fixes for several bugs that got reported by the community.

Notable Changes
  • fix(deps): update kotlin monorepo to v2.0.10 - #7517
  • Update to Kotlin 2.0.0 #6640
  • fix(deps): update kotlin monorepo to v1.9.24 - #7264
  • fix(deps): update dependency com.android.tools.build:gradle to v8.5.2 - #7525
  • chore(deps): update dependency gradle to v8.10 - #7546
Changelog
  • Add basic support for isolated projects to 1.x - #7526
  • ExplicitCollectionElementAccessMethod: fix false positive when Map put has 3 arguments - #7563
  • BracesOnIfStatements: fix false-positive when chained - #7444
  • Add enum entry check in UndocumentedPublicProperty - #7426
  • Use the anchor which is already present before - #7423
  • Fix small corner-case in "SerialVersionUIDInSerializableClass" rule, … - #7346
  • SwallowedException: fix false positive when exception is used as a receiver - #7288
  • NamedArguments: fix false positive on spread varargs - #7283
  • MultilineLambdaItParameter: fix false negative with single statement on multiple lines - #7221
  • Check for root of receiver in selector expression - #7220
  • Check for public companion object for UndocumentedPublicClass - #7219
  • fix: TopLevelPropertyNaming also detecting extension property name - #7212
  • Publish detekt-compiler-plugin-all to Maven and GH Releases - #7179
  • versioned default detekt config file link - #7161
  • Support rangeUntil operator for UnusedImport rule - #7104
  • Fix false positive on it usages when type parameter is specified - #6850
Housekeeping/Docs
  • [bugfix] AnnotationOnSeparateLine in snippets - #6526
  • Add docs about using the Compiler Plugin with the Kotlin CLI compiler - #7184

v1.23.6

25 Mar 11:08
418f78b

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

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

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

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