We're extremely excited to announce the next upcoming stable release of Detekt: 1.22.0 🚀
This release is coming with 16 new rules, 2 new rulesets and several new functionalities & APIs.
We've also introduced the Detekt Marketplace, a place for users to share their 3rd party rules and extensions.
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
We're introducing the Detekt Marketplace, a place where you can add your own 3rd party extension such as rule, plugins, custom reporter, etc. - #5191
Our website is now versioned. You can find the changes for each version using the dropdown menu on the top bar. Documentation for the upcoming version (next) can be found here.
We added a new ruleset called detekt-rules-ruleauthors containing rules for Rule Authors to enforce best practices on Detekt rules such as the new ViolatesTypeResolutionRequirements - #5129#5182
We added a new ruleset called detekt-rules-libraries containing rules mostly useful for Library Authors - We moved the following rules inside ForbiddenPublicDataClass, LibraryCodeMustSpecifyReturnType, LibraryEntitiesShouldNotBePublic this new ruleset - See Migration below on how to migrate #5360
We added support for JVM toolchain. This means that Detekt will now respect the JDK toolchain you specify on your Gradle configuration. You will also be able to specify a custom JDK home with the --jdk-home CLI parameter - #5269
Improvement for Type Resolution
We will now skip rules annotated with @RequiresTypeResolution when without Type Resolution - #5176
We will warn users if they run rules requiring Type Resolution when Type Resolution is disabled, so they're not silently skipped - #5226
Improvement for Config Management
We added exhaustiveness check during config validation. You can enable it checkExhaustiveness: true in your config file. This is disabled by default. - #5089
We added support for generating custom configuration for rule authors - #5080
Deprecations & Removals
We deprecated the MultiRule class as it was overly complicated. The suggested approach is to just provide separated rules. - #5161
The --fail-fast CLI flag (and failFast Gradle property) has been removed. It was deprecated since 1.16.x - #5290
We deprecated the following rules DuplicateCaseInWhenExpression, MissingWhenCase, RedundantElseInWhen as the Kotlin Compiler is already reporting errors for those scenarios - #5309
We removed the --print-ast CLI flag as PsiViewer provides the same features - #5418
Notable changes to existing rules
ArrayPrimitive is now working only with Type Resolution - #5175
WildcardImport is now running also on tests by default - #5121
ForbiddenImport allows now to specify a reason for every forbidden import - #4909
IgnoredReturnValue: option restrictToAnnotatedMethods is now deprecated in favor of restrictToConfig - #4922
This version of Detekt is built with Gradle v7.5.1, AGP 7.3.1, Kotlin 1.7.21 and KtLint 0.47.1 (see #5363#5189#5411#5312#5519)
The minimum supported Gradle version is now v6.7.1 - #4964
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps io.gitlab.arturbosch.detekt from 1.15.0 to 1.22.0.
Release notes
Sourced from io.gitlab.arturbosch.detekt's releases.
... (truncated)
Commits
4b1da0d
Prepare Detekt 1.22.0 (#5544)c97b8ef
Update dependency io.gitlab.arturbosch.detekt:detekt-formatting to v1.22.0 (#...a80cf88
Update plugin io.gitlab.arturbosch.detekt to v1.22.0 (#5546)e04e111
Stale waiting for feedback issues after 30 days (#5543)ab1c3c0
Update documentation for TrailingComma rules (#5513)7e31f88
Update kotlin monorepo to v1.7.21 (#5519)7fd9987
ReturnCount: correctly count assignment expressions with elvis return as guar...411ef80
Update dependency danger to v11.2.0 (#5530)ae52de0
Update github/codeql-action digest to 678fc3a (#5538)35ba768
Update github/codeql-action digest to 4238421 (#5532)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)