Closed renovate[bot] closed 1 year ago
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above.
β Warning: custom changes will be lost.
This PR contains the following updates:
1.20.0
->1.22.0
Release Notes
detekt/detekt
### [`v1.22.0`](https://togithub.com/detekt/detekt/releases/tag/v1.22.0) 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**](https://detekt.dev/marketplace), a place for users to share their 3rd party rules and extensions. We want to take the opportunity to thank [our Sponsors](https://togithub.com/sponsors/detekt) 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](https://kotlinlang.slack.com/archives/C88E12QH4) channel on KotlinLang's Slack (you can [get an invite here](https://surveys.jetbrains.com/s3/kotlin-slack-sign-up)). ##### Notable Changes - We're introducing the [**Detekt Marketplace**](https://detekt.dev/marketplace), a place where you can add your own 3rd party extension such as rule, plugins, custom reporter, etc. - [#5191](https://togithub.com/detekt/detekt/pull/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](https://detekt.dev/docs/next/intro). - We added **16** new Rules to Detekt - `AlsoCouldBeApply` - [#5333](https://togithub.com/detekt/detekt/pull/5333) - `MultilineRawStringIndentation` - [#5058](https://togithub.com/detekt/detekt/pull/5058) - `TrimMultilineRawString` - [#5051](https://togithub.com/detekt/detekt/pull/5051) - `UnnecessaryNotNullCheck` - [#5218](https://togithub.com/detekt/detekt/pull/5218) - `UnnecessaryPartOfBinaryExpression` - [#5203](https://togithub.com/detekt/detekt/pull/5203) - `UseSumOfInsteadOfFlatMapSize` - [#5405](https://togithub.com/detekt/detekt/pull/5405) - `FunctionReturnTypeSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `FunctionSignature` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `FunctionStartOfBodySpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `NullableTypeSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `ParameterListSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `SpacingBetweenFunctionNameAndOpeningParenthesis` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `TrailingCommaOnCallSite` from KtLint - [#5312](https://togithub.com/detekt/detekt/pull/5312) - `TrailingCommaOnDeclarationSite` from KtLint - [#5312](https://togithub.com/detekt/detekt/pull/5312) - `TypeParameterListSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - 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](https://togithub.com/detekt/detekt/pull/5129) [#5182](https://togithub.com/detekt/detekt/pull/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](https://togithub.com/detekt/detekt/pull/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](https://togithub.com/detekt/detekt/pull/5269) - Improvement for Type Resolution - We will now skip rules annotated with `@RequiresTypeResolution` when without Type Resolution - [#5176](https://togithub.com/detekt/detekt/pull/5176) - We will warn users if they run rules requiring Type Resolution when Type Resolution is disabled, so they're not silently skipped - [#5226](https://togithub.com/detekt/detekt/pull/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](https://togithub.com/detekt/detekt/pull/5089) - We added support for generating custom configuration for rule authors - [#5080](https://togithub.com/detekt/detekt/pull/5080) - Deprecations & Removals - We deprecated the MultiRule class as it was overly complicated. The suggested approach is to just provide separated rules. - [#5161](https://togithub.com/detekt/detekt/pull/5161) - The `--fail-fast` CLI flag (and `failFast` Gradle property) has been removed. It was deprecated since 1.16.x - [#5290](https://togithub.com/detekt/detekt/pull/5290) - We **deprecated** the following rules `DuplicateCaseInWhenExpression`, `MissingWhenCase`, `RedundantElseInWhen` as the Kotlin Compiler is already reporting errors for those scenarios - [#5309](https://togithub.com/detekt/detekt/pull/5309) - We removed the `--print-ast` CLI flag as [PsiViewer](https://www.jetbrains.com/help/idea/psi-viewer.html) provides the same features - [#5418](https://togithub.com/detekt/detekt/pull/5418) - Notable changes to existing rules - `ArrayPrimitive` is now working only with Type Resolution - [#5175](https://togithub.com/detekt/detekt/pull/5175) - `WildcardImport` is now running also on tests by default - [#5121](https://togithub.com/detekt/detekt/pull/5121) - `ForbiddenImport` allows now to specify a reason for every forbidden import - [#4909](https://togithub.com/detekt/detekt/pull/4909) - `IgnoredReturnValue`: option `restrictToAnnotatedMethods` is now deprecated in favor of `restrictToConfig` - [#4922](https://togithub.com/detekt/detekt/pull/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](https://togithub.com/detekt/detekt/pull/5363) [#5189](https://togithub.com/detekt/detekt/pull/5189) [#5411](https://togithub.com/detekt/detekt/pull/5411) [#5312](https://togithub.com/detekt/detekt/pull/5312) [#5519](https://togithub.com/detekt/detekt/pull/5519)) - The minimum supported Gradle version is now `v6.7.1` - [#4964](https://togithub.com/detekt/detekt/pull/4964) ##### Migration We deprecated a number of rules in this release. You should update your config file as follows: ```diff potential-bugs: active: true ... - DuplicateCaseInWhenExpression: - active: true ... - MissingWhenCase: - active: true - allowElseExpression: true ... - RedundantElseInWhen: - active: true style: active: true ... - ForbiddenPublicDataClass: - active: true - excludes: ['**'] - ignorePackages: - - '*.internal' - - '*.internal.*' ... - LibraryCodeMustSpecifyReturnType: - active: true - excludes: ['**'] ... - LibraryEntitiesShouldNotBePublic: - active: true - excludes: ['**'] ``` If you wish to use the `libraries` ruleset we introduced you should add the following to your config file: ```diff + libraries: + active: true + ForbiddenPublicDataClass: + active: false + LibraryEntitiesShouldNotBePublic: + active: false + LibraryCodeMustSpecifyReturnType: + active: true ``` and add the following to you `build.gradle` file: ```kotlin detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:$version") ``` If you're using our KtLint wrapper (i.e. `detekt-formatting`) you should also update your config file as follows: ```diff formatting: active: true ... - TrailingComma: - active: false - autoCorrect: true - allowTrailingComma: false - allowTrailingCommaOnCallSite: false ... + TrailingCommaOnCallSite: + active: false + autoCorrect: true + useTrailingCommaOnCallSite: false + TrailingCommaOnDeclarationSite: + active: false + autoCorrect: true + useTrailingCommaOnDeclarationSite: false ``` ##### Changelog - ReturnCount: correctly count assignment expressions with elvis return as guard clauses - [#5539](https://togithub.com/detekt/detekt/pull/5539) - UnnecessaryPartOfBinaryExpression: fix false positive with pair creation - [#5516](https://togithub.com/detekt/detekt/pull/5516) - False positive at `UnnecessaryPartOfBinaryExpression` - [#5514](https://togithub.com/detekt/detekt/issues/5514) - Update documentation for TrailingComma rules - [#5513](https://togithub.com/detekt/detekt/pull/5513) - `TrimMultilineRawString` false-positive on annotation parameters - [#5476](https://togithub.com/detekt/detekt/issues/5476) - Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks UnreachableCode - [#5435](https://togithub.com/detekt/detekt/issues/5435) - Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks ignoreAnnotated - [#5427](https://togithub.com/detekt/detekt/issues/5427) - Fix issues introduced by [#5152](https://togithub.com/detekt/detekt/issues/5152) - [#5508](https://togithub.com/detekt/detekt/pull/5508) - MultilineLambdaItParameter: fix false positive for one-line statements with a lambda argument - [#5505](https://togithub.com/detekt/detekt/pull/5505) - UseArrayLiteralsInAnnotations: fix false negative with primitive array factory calls - [#5482](https://togithub.com/detekt/detekt/pull/5482) - TrimMultilineRawString: fix false positive when it's expected as constant - [#5480](https://togithub.com/detekt/detekt/pull/5480) - Fix false negative `SafeCast` with no braces - [#5479](https://togithub.com/detekt/detekt/pull/5479) - Update gradle/wrapper-validation-action digest to [`55e685c`](https://togithub.com/detekt/detekt/commit/55e685c) - [#5472](https://togithub.com/detekt/detekt/pull/5472) - Grant permission for type resolution Gradle job - [#5470](https://togithub.com/detekt/detekt/pull/5470) - Fix ObjectPropertyNaming Rule false positive - [#5466](https://togithub.com/detekt/detekt/pull/5466) - Fix LambdaParameterNaming rule false positive - [#5465](https://togithub.com/detekt/detekt/pull/5465) - Fix ReturnCount false positive when excludeReturnFromLambda is enabled - [#5459](https://togithub.com/detekt/detekt/pull/5459) - CognitiveComplexity: count else/else-if as one complexity - [#5458](https://togithub.com/detekt/detekt/pull/5458) - Fix false positive MultilineRawStringIndentation with tab indentation - [#5453](https://togithub.com/detekt/detekt/pull/5453) - Don't show the number of issues generating the BindingContext - [#5449](https://togithub.com/detekt/detekt/pull/5449) - Make detekt less noisy - [#5448](https://togithub.com/detekt/detekt/pull/5448) - New ruleauthors rule for Entity.from(x.nameIdentifier ?: x) -> Entity.atName(x) - [#5444](https://togithub.com/detekt/detekt/pull/5444) - Separating ComplexMethod rule into CyclomaticComplexMethod and CognitiveComplexMethod - [#5442](https://togithub.com/detekt/detekt/pull/5442) - Improve error reporting for CascadingCallWrapping - [#5439](https://togithub.com/detekt/detekt/pull/5439) - TrimMultilineRawString: fix false positive with not a raw string - [#5438](https://togithub.com/detekt/detekt/pull/5438) - BooleanPropertyNaming highlight only the name of the variable - [#5431](https://togithub.com/detekt/detekt/pull/5431) - Deprecate `TrailingComma` as it's now split in two rules - [#5423](https://togithub.com/detekt/detekt/pull/5423) - Remove unused constant - [#5421](https://togithub.com/detekt/detekt/pull/5421) - Report if/else as issue location instead of block - [#5407](https://togithub.com/detekt/detekt/pull/5407) - Remove some unnecessary suppressions - [#5400](https://togithub.com/detekt/detekt/pull/5400) - Check FormattingRule is auto-correctable by information provided by ktlint - [#5398](https://togithub.com/detekt/detekt/pull/5398) - Fix false negative MultilineLambdaItParameter on complex multiline single statement - [#5397](https://togithub.com/detekt/detekt/pull/5397) - ObjectPropertyNaming: fix false positive with top level properties - [#5390](https://togithub.com/detekt/detekt/pull/5390) - Remove usage of MPP targets function for JVM-only projects - [#5383](https://togithub.com/detekt/detekt/pull/5383) - UnnecessaryNotNullCheck: fix false negative with smart casted arguments - [#5380](https://togithub.com/detekt/detekt/pull/5380) - Add missing overlapping info & fix rules URLs - [#5378](https://togithub.com/detekt/detekt/pull/5378) - AlsoCouldBeApply: fix false positive when all statements are not `it`-started expressions - [#5376](https://togithub.com/detekt/detekt/pull/5376) - UnusedPrivateMember: fix false negative with named arguments - [#5374](https://togithub.com/detekt/detekt/pull/5374) - Change requires type resolution rule warning to debug level to not spam the user console - [#5353](https://togithub.com/detekt/detekt/pull/5353) - Report UseDataClass findings on class name - [#5352](https://togithub.com/detekt/detekt/pull/5352) - Report LabeledExpression as the label instead of the whole expression - [#5351](https://togithub.com/detekt/detekt/pull/5351) - Report CastToNullableType at the cast operator instead of the whole expression - [#5350](https://togithub.com/detekt/detekt/pull/5350) - Convert previously known string property to list based on default value - [#5347](https://togithub.com/detekt/detekt/pull/5347) - CastToNullableType: highlights too much - [#5346](https://togithub.com/detekt/detekt/issues/5346) - UseDataClass flags the whole class body, not just the name - [#5338](https://togithub.com/detekt/detekt/issues/5338) - CanBeNonNullable: explain why the rule does what it does. - [#5332](https://togithub.com/detekt/detekt/pull/5332) - Differentiate between correctable and non-correctable KtLint rules - [#5324](https://togithub.com/detekt/detekt/pull/5324) - ReturnCount 1.22.0 crashes on valid 1.21.0 config property excludedFunctions when using --all-rules cli flag - [#5323](https://togithub.com/detekt/detekt/issues/5323) - LabeledExpression to highlight only label - [#5316](https://togithub.com/detekt/detekt/issues/5316) - Use the correct source directory set on JVM - [#5163](https://togithub.com/detekt/detekt/pull/5163) - Get Android variant compile classpath from compileConfiguration - [#5152](https://togithub.com/detekt/detekt/pull/5152) - Use list config for `FunctionOnlyReturningConstant>excludedFunctions` - [#5120](https://togithub.com/detekt/detekt/pull/5120) - MaxLineLength: raw typo and test cleanup - [#5315](https://togithub.com/detekt/detekt/pull/5315) - EndOfSentenceFormat: fix HTML tag heuristic - [#5313](https://togithub.com/detekt/detekt/pull/5313) - Fix EndOfSentenceFormat highlight - [#5311](https://togithub.com/detekt/detekt/pull/5311) - Introduce configFile property on DetektGenerateTask - [#5308](https://togithub.com/detekt/detekt/pull/5308) - Improve debug suggestion message - [#5300](https://togithub.com/detekt/detekt/pull/5300) - Fat-Jar version of detekt-generator module - [#5297](https://togithub.com/detekt/detekt/pull/5297) - Toolchains docs - [#5293](https://togithub.com/detekt/detekt/pull/5293) - Adopt new AGP dsl - [#5288](https://togithub.com/detekt/detekt/pull/5288) - NonBooleanPropertyPrefixedWithIs: Allow boolean functions - [#5285](https://togithub.com/detekt/detekt/pull/5285) - Provide the current classpath inside `KotlinEnvironmentResolver` - [#5275](https://togithub.com/detekt/detekt/pull/5275) - Fix false-positive on `NestedScopeFunctions` - [#5274](https://togithub.com/detekt/detekt/pull/5274) - Use convention method to set task property defaults - [#5272](https://togithub.com/detekt/detekt/pull/5272) - Update docusaurus monorepo to v2.1.0 - [#5270](https://togithub.com/detekt/detekt/pull/5270) - detektVersionReplace.js plugin is not replacing all \[detekt_version] tags on website - [#5266](https://togithub.com/detekt/detekt/pull/5266) - Update ktlint rule doc links - [#5258](https://togithub.com/detekt/detekt/pull/5258) - Remove redundant rule config for rules enabled by default - [#5257](https://togithub.com/detekt/detekt/pull/5257) - UnusedPrivateMember: fix false positive with backtick parameters - [#5252](https://togithub.com/detekt/detekt/pull/5252) - Improve MultilineRawStringIndentation - [#5245](https://togithub.com/detekt/detekt/pull/5245) - UnnecessaryLet: fix false positive with with invoke operator calls - [#5240](https://togithub.com/detekt/detekt/pull/5240) - Introduce baseline tooling api - [#5239](https://togithub.com/detekt/detekt/pull/5239) - Allow secondary constructors to reference CoroutineDispatchers - [#5227](https://togithub.com/detekt/detekt/pull/5227) - Update `UnnecessaryAbstractClass` issue description to be less verbose - [#5224](https://togithub.com/detekt/detekt/pull/5224) - Update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.8.0 - [#5223](https://togithub.com/detekt/detekt/pull/5223) - Pin dependencies - [#5222](https://togithub.com/detekt/detekt/pull/5222) - Remove rule from NamingRules multi rule - [#5212](https://togithub.com/detekt/detekt/pull/5212) - Run all rules from EmptyBlocks multi rule individually - [#5208](https://togithub.com/detekt/detekt/pull/5208) - Run all rules from KDocStyle multi rule individually - [#5207](https://togithub.com/detekt/detekt/pull/5207) - Docs: GitHub - Add link to configure Sarif severity alert level - [#5206](https://togithub.com/detekt/detekt/pull/5206) - Fix errors with `detektGenerateConfig` - [#5199](https://togithub.com/detekt/detekt/pull/5199) - Forbid constructors with `ForbiddenMethodCall` - [#5195](https://togithub.com/detekt/detekt/pull/5195) - Update github/codeql-action digest to [`2ca79b6`](https://togithub.com/detekt/detekt/commit/2ca79b6) - [#5177](https://togithub.com/detekt/detekt/pull/5177) - Allow to ignore overloaded methods for the complex interface rule ([#5165](https://togithub.com/detekt/detekt/issues/5165)) - [#5173](https://togithub.com/detekt/detekt/pull/5173) - Add excludesRawStrings in MaxLineLength - [#5171](https://togithub.com/detekt/detekt/pull/5171) - Enable Predictive Test Selection for local builds - [#5170](https://togithub.com/detekt/detekt/pull/5170) - Update dependency org.kohsuke:github-api to v1.307 - [#5168](https://togithub.com/detekt/detekt/pull/5168) - Update dependency com.github.ajalt:clikt to v2.8.0 - [#5167](https://togithub.com/detekt/detekt/pull/5167) - Update docusaurus monorepo to v2.0.1 - [#5166](https://togithub.com/detekt/detekt/pull/5166) - Run build-logic Kotlin compilation out of process on CI - [#5162](https://togithub.com/detekt/detekt/pull/5162) - Add information about exhaustiveness check to documentation - [#5160](https://togithub.com/detekt/detekt/pull/5160) - Use getter when determining whether custom config path is set in DetektGenerateConfigTask - [#5157](https://togithub.com/detekt/detekt/pull/5157) - Limit Kotlin version warning suppression scope in build - [#5156](https://togithub.com/detekt/detekt/pull/5156) - Re-enable warnings as errors for detekt-gradle-plugin - [#5155](https://togithub.com/detekt/detekt/pull/5155) - Bundle slf4j-nop in detekt-formatting JAR - [#5153](https://togithub.com/detekt/detekt/pull/5153) - Fix false negative for UseRequire when thrown in conditional block - [#5147](https://togithub.com/detekt/detekt/pull/5147) - Allow parentheses for unclear precedence with range operator - [#5143](https://togithub.com/detekt/detekt/pull/5143) - Mark apiDump task as incompatible with configuration cache - [#5134](https://togithub.com/detekt/detekt/pull/5134) - Improve binding context management - [#5130](https://togithub.com/detekt/detekt/pull/5130) - `RedundantExplicitType` add annotation `@RequiresTypeResolution` - [#5128](https://togithub.com/detekt/detekt/pull/5128) - Disable `ExitOutsideMain` if `contextBinding` is empty - [#5127](https://togithub.com/detekt/detekt/pull/5127) - Use list config for `DataClassContainsFunctions>conversionFunctionPrefix` - [#5119](https://togithub.com/detekt/detekt/pull/5119) - Support proper globbing in `ReturnCount` - [#5118](https://togithub.com/detekt/detekt/pull/5118) - Improve finding message of ExplicitItLambdaParameter - [#5117](https://togithub.com/detekt/detekt/pull/5117) - Update JamesIves/github-pages-deploy-action digest to [`13046b6`](https://togithub.com/detekt/detekt/commit/13046b6) - [#5110](https://togithub.com/detekt/detekt/pull/5110) - UnusedUnaryOperator: fix false positive with var assignment and if expression - [#5106](https://togithub.com/detekt/detekt/pull/5106) - Tag publishPlugins task as incompatible with configuration cache - [#5101](https://togithub.com/detekt/detekt/pull/5101) - Make verifyGeneratorOutput task configuration cache compatible - [#5100](https://togithub.com/detekt/detekt/pull/5100) - Remove obsolete FeatureInAlphaState opt in - [#5099](https://togithub.com/detekt/detekt/pull/5099) - Remove explicit RequiresOptIn compiler flag - [#5098](https://togithub.com/detekt/detekt/pull/5098) - Use Gradle's configuration cache by default - [#5095](https://togithub.com/detekt/detekt/pull/5095) - Detect undocumented protected classes, properties, and functions - [#5083](https://togithub.com/detekt/detekt/pull/5083) - ReturnCount.excludedFunctions should be a List\Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.