We're more than excited to introduce you a next stable release of Detekt: 1.18.0 🎉
This release is coming with a lot of changes, new rules, evolution in the API and stability improvements.
We want to take the opportunity to thank our contributors for testing, bug reporting and helping
us release this new version of Detekt.
Notable Changes
We've added two new rules: AvoidReferentialEquality and BooleanPropertyNaming (see #3924 and #3795)
This version of Detekt ships with Kotlin 1.5.21, and we're compiling with apiVersion set to 1.4 - #3956 and #3852
The minimum version of Gradle to use Detekt Gradle Plugin is now 6.1 - #3830
This version of Detekt has been tested against Java 16 - #3698
We fixed a long-standing bug related to parallel execution (#3248) - #3799 and #3822
We now use multi-line format for list options in the default detekt config file - #3827
The rule VarCouldBeVal has been updated and now works only with type resolution to provide more precise findings - #3880
We removed all the references to Extensions.getRootArea that is now deprecated from our codebase. This was affecting users with sporadic crashes. - #3848
For detekt rule authors: We created a Github Template that you can use to bootstrap your custom rule project: detekt-custom-rule-template. You can use JitPack to host it and share your rule easily with other members of the community.
For detekt rule authors: We finished the rework to use the annotations instead of kdoc tags in rules. Specifically configurations must be configured using @Configuration while auto-correction capability should be specified with the @AutoCorrectable annotation #3820.
Migration
We renamed the input property inside the detekt{} extension of the Gradle plugin to source. The input property has been deprecated, and we invite you to migrate to the new property (see #3951)
// BEFORE
detekt {
input = files(...)
}
// AFTER
detekt {
source = files(...)
}
For all rule authors: When accessing a config value within a rule, using valueOrDefault and valueOrDefaultCommaSeparated is no longer recommended. While both will remain part of the public api, they should be replaced by one of the config delegates (see #3891). The key that is used to lookup the configured value is derived from the property name.
/* simple property */
// BEFORE
val ignoreDataClasses = valueOrDefault("ignoreDataClasses", true)
// AFTER
val ignoreDataClasses: Boolean by config(true)
/* transformed simple property */
// BEFORE
val ignoredName = valueOrDefault("ignoredName", "").trim()
</tr></table>
... (truncated)
Commits
9d4ae9d [KMP] Fix resolution of Android test classpaths (#4026)
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 detekt-formatting from 1.17.1 to 1.18.0.
Release notes
Sourced from detekt-formatting's releases.
... (truncated)
Commits
9d4ae9d
[KMP] Fix resolution of Android test classpaths (#4026)66049c5
Sort config lists (#4014)bca4a15
Multiplatform tasks should not depend on check (#4025)28830b8
Enable UnnecessaryLet rule for detekt code base (#4024)b4329da
enable PreferToOverPairSyntax rule for detekt code base (#4023)e512a1f
mark configWithFallback as unstable (#4028)207d9fb
Update docs to use configuration avoidance API (#4022)48c1da8
Fix broken verifyGeneratorOutput task (#4019)7540dc2
Add IllegalArgumentException and IllegalStateException to ThrowingExceptionsW...8c8d049
Add detekt tutorial from raywenderlich.com (#4018)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)