Skip to main content

Changelog and Migration Guide for Detekt 2.0.0

warning

Detekt 2.0.0 is still in alpha. While it's stable enough to use in your projects, you can expect further breaking changes before we reach a stable release.

2.0.0-alpha.0 - 2025-09-04

This is an initial alpha release of Detekt 2.0.0.

Notable Changes

  • Add new ForbiddenOptIn rule - #8448
  • Migrate Gradle plugin IDs to dev.detekt.* - #8434
  • Enable gradle worker api by default on detekt tasks - #6913
  • Update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.7.0 - #8303
  • fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.6.0 - #8138
  • fix(deps): update kotlin monorepo to v2.1.21 - #8127
  • Kotlin 2.2.0 - #8098
  • Only test with Java 17+ on CI - #8073
  • fix(deps): update dependency com.android.tools.build:gradle to v8.9.0 - #8007
  • Update to Kotlin 2.1.20 - #7988
  • Add 'code_style' parameter to formatting rule set - #7959
  • Remove PreferToOverPairSyntax - #7943
  • fix(deps): update kotlin monorepo to v2.1.10 - #7911
  • fix(deps): update dependency com.android.tools.build:gradle to v8.8.0 - #7879
  • fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.5.0 - #7822
  • fix(deps): update dependency com.android.tools.build:gradle to v8.7.3 - #7811
  • fix(deps): update kotlin monorepo to v2.1.0 - #7805
  • chore(deps): update dependency gradle to v8.12.1 - #7780
  • fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.4.1 - #7744
  • fix(deps): update dependency com.android.tools.build:gradle to v8.7.1 - #7728
  • fix(deps): update dependency com.android.tools.build:gradle to v8.7.0 - #7691
  • SARIF: Don't set level in reportingDescriptor if not set on rule - #7682
  • Update min supported Gradle version to 7.6.3 - #7658
  • Update min supported AGP version to 7.3.1 - #7657
  • Kotlin 2.1.0-RC2 - #7649
  • fix(deps): update kotlin - #7580
  • fix(deps): update kotlin monorepo to v2.0.10 - #7517
  • LongParameterList uses BindingContext so it needs to add @RequiresTypeResolution - #7503
  • Stop saying "type resolution" is experimental - #7494
  • Add flag to enable and disable type resolution mode - #7490
  • Delete the Deprecated properties - #7425
  • Add ForbiddenNamedParam rule - #7424
  • Add rule ErrorUsageWithThrowable - #7419
  • Align API, language version and JVM target between detekt type resolution tasks and Kotlin compilation tasks - #7400
  • fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.3.0 - #7343
  • Rename UnusedPrivateMember to UnusedPrivateFunction - #7324
  • Execute compiler plugin tests on language version 1.9 due to K2 incompatibility - #7303
  • Bump min supported AGP version to 7.1.3 - #7301
  • fix(deps): update kotlin monorepo to v1.9.24 - #7264
  • Run same rule multiple times with different configuration - #7263
  • fix(deps): update dependency com.android.tools.build:gradle to v8.4.0 - #7245
  • Configure reproducible archives - #7118
  • Rename RedundantVisibilityModifierRule to RedundantVisibilityModifier - #7110
  • Update dependency gradle to v8.7 - #7080
  • Add DoubleNegativeExpression rule - #7048
  • Refactor DGP to compile against AGP API - #7041
  • Update kotlin monorepo to v1.9.23 - #7027
  • Use new KMP task naming convention - #7011
  • Add new rules from ktlint 1.2 - #7006
  • Update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.2.1 - #7000
  • Add MissingSuperCall rule - #6977
  • Register Detekt task for each source set - #6973
  • Use standard Gradle properties to manage built-in report outputs - #6964
  • Update dependency gradle to v8.6 - #6939
  • Update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.1.1 - #6840
  • fix(deps): update dependency com.android.tools.build:gradle to v8.2.1 - #6803
  • fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.1.0 - #6739
  • Add CoroutineLaunchedInTestWithoutRunTest rule - #6692
  • Test Gradle plugin with AGP 8.2.0 - #6672
  • chore(deps): update dependency gradle to v8.5 - #6663
  • Implement new rule: RedundantConstructorKeyword - #6660
  • fix(deps): update kotlin monorepo to v1.9.21 - #6642
  • Update to Kotlin 2.0.0 - #6640
  • Run build on JDK 21 - #6609
  • fix(deps): update kotlin monorepo to v1.9.20 - #6572
  • UnnecessaryAny - Add rule to prevent usage of any { } when simple contains can be … - #6571
  • Update dependency gradle to v8.4 - #6522
  • Update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1 - #6468
  • Remove Debt - #6460
  • Update kotlin monorepo to v1.9.10 - #6423
  • Update com.android.tools.build - #6419
  • Allow the failure severity to be configured - #6417
  • Mark UseCheckOrError rule to require type resolution. - #6361
  • Mark UnusedImports rule to require type resolution. - #6360
  • Mark OptionalUnit rule to require type resolution. - #6359
  • Mark UseRequire rule to require type resolution. - #6358
  • Mark UnusedPrivateMember rule to require type resolution. - #6356
  • Mark UseDataClass rule to require type resolution. - #6355
  • Mark SpreadOperator rule to require type resolution. - #6351
  • Mark MemberNameEqualsClassName rule to require type resolution. - #6347
  • Mark InstanceOfCheckForException rule to require type resolution. - #6346
  • Mark ImplicitDefaultLocale rule to require type resolution. - #6344
  • Apply path filters based on relative paths when possible - #6330
  • Add CharArrayToStringCall rule - #6318
  • Update kotlin monorepo to v1.9.0 - #6258
  • Remove deprecated rules and tests - #6193
  • Add UnnamedParameterUse rule - #6055
  • Add config option to disable dependency on the Gradle check task - #6049
  • Add MissingUseCall.kt rule - #6026
  • Split UnnecessaryAbstractClass into two rules - #5870

Breaking Changes

  • Detektion doesn't implement UserDataHolder - #8556
  • Remove Notification.isError - #8546
  • Remove FindingsAssert.hasStartSourceLocations - #8521
  • Remove FindingsAssert.hasTextLocations(String) - #8519
  • Remove FindingsAssert.hasEndSourceLocations() - #8518
  • Remove duplicated function - #8501
  • Rename :detekt-formatting module to :detekt-rules-ktlint-wrapper - #8474
  • Migrate the whole DCG to dev.detekt.gradle.* package - #8457
  • Change package detekt-gradle-plugin - #8355
  • Stop compiling test snippets with experimental script compiler - #8400
  • Change package of :detekt-generator to dev.detekt.generator - #8382
  • Change package of :detekt-psi-utils to dev.detekt.psi - #8379
  • Change package of :detekt-rules-ruleauthors to dev.detekt.rules.ruleauthors - #8376
  • Change package of :detekt-rules-performance to dev.detekt.rules.performance - #8375
  • Change package of :detekt-rules-libraries to dev.detekt.rules.libraries - #8374
  • Change package of :detekt-rules-exceptions to dev.detekt.rules.exceptions - #8371
  • Change package of :detekt-rules-empty to dev.detekt.rules.empty - #8370
  • Change package of :detekt-rules-documentation to dev.detekt.rules.documentation - #8369
  • Change package of :detekt-report-* to dev.detekt.report.* - #8368
  • Change package of :detekt-tooling to dev.detekt.tooling - #8367
  • Change package of :detekt-test-utils to dev.detekt.test.utils - #8366
  • Change package of :detekt-parser to dev.detekt.parser - #8364
  • Remove buildRunner function from detekt-cli - #8361
  • Move detekt-api to dev.detekt.api - #8358
  • Remove CloseableWrapper - #8265
  • Remove unused isCallingWithNonNullCheckArgument function - #8196
  • Removes CompilerResources wrapper - #8185
  • Remove usage of DataFlowValueFactory - #8177
  • Don't generate compatibility bridges and DefaultImpls classes for default implementations in interfaces - #8136
  • Use StandaloneAnalysisAPISession to setup analysis environment - #8110
  • Use StandaloneAnalysisAPISession to setup analysis environment for tests - #8104
  • Create BindingContext without KotlinCoreEnvironment - #8099
  • Allow creation of BindingContext in tests without KotlinCoreEnvironment - #8071
  • Migrate from kotlin-compiler-embeddable to kotlin-compiler - #8029
  • Simplify test api - #7873
  • Customize rule url - #7871
  • Severity on RuleInstance - #7835
  • Change Entity.signature - #7750
  • Simplify entity - #7716
  • Introduce suppressReasons - #7591
  • Remove exclude autocorrect - #7514
  • Remove KtElement from Issue - #7513
  • RequireTypeResolution now is an interface instead of an annotation - #7508
  • Non nullable CompilerResources - #7501
  • Create FakeCompilerResources and add CompilerResources as parameter on Rule.lint extensions - #7500
  • Remove Rule.lint(Path) overload function from :detekt-test - #7499
  • Make ConsoleReport an interface instead of an abstract class - #7478
  • Simplify detekt.api.Extension - #7477
  • Add basePath inside SetupContext - #7474
  • Remove txt report - #7470
  • Remove Compactable - #7469
  • Remove extensions.disableDefaultRuleSets in favor of RulesSpec.RunPolicy.DisableDefaultRuleSets - #7380
  • Remove fileNameWithoutSuffix from public API - #7362
  • Remove the default value of Entity.ktElement - #7355
  • Move Traversing utils to detekt-rules-documentation - #7326
  • Remove ResolvedCall.isCalling - #7317
  • Remove KtIfExpression.isElseIf - #7316
  • Remove PsiElement.getParentExpressionAfterParenthesis - #7315
  • Remove aliases from Rule api - #7312
  • Remove KtExpression.isUnitExpression() - #7311
  • Remove IT_LITERAL & LET_LITERAL - #7310
  • Remove KtNamedDeclaration.identifierName() - #7308
  • Remove detekt-psi-utils usage from detekt-api - #7260
  • Make Entity.ktElement no nullable - #7259
  • Remove ability to create AnalysisResult by passing source code and filename - #7255
  • Remove PsiFile.lineSeparator - #7240
  • Remove Kotlin file extension constants from API - #7239
  • Remove PsiFile.relativePath - #7238
  • Remove PsiFile.basePath - #7237
  • Remove FilePath - #7235
  • Make detekt-formatting autocorrect work with read-only KtFile - #7206
  • Remove BindingContext from FileProcessListener - #7177
  • Rename getContextForPaths to createContextBinding - #7165
  • Remove unused functions from tooling API - #7159
  • Move classes to psi-utils - #7105
  • Remove default value for Location.endSource - #7077
  • Make Location.startLineAndColumn() private - #7076
  • Define default values only at the DetektExtension level - #7056
  • Remove KtTreeCompiler - #7009
  • Cli provides list of input files - #7007
  • Remove autoCorrect from rule set level - #6914
  • Move @file:Suppress handling from Rule to core - #6888
  • Make findings a List<Finding2> instead of a Map<RuleSet.Id, List<Finding2>> - #6884
  • Add ruleSetId into Finding2 - #6883
  • Remove Issue - #6878
  • Remove Issue from Rule - #6874
  • Remove Issue from Finding - #6873
  • Move PathFilters from detekt-api to detekt-utils - #6866
  • Move exclusion out of Rule - #6865
  • Create a value class for the id of a Rule - #6851
  • Create a value class for the id of a RuleSet - #6849
  • Remove findings property from Rule - #6845
  • Remove Context interface - #6843
  • Remove base rule - #6837
  • Remove unnecessary functions from detekt-psi-utils - #6823
  • Remove commaSeparatedPattern - #6820
  • Remove support for comma separated strings - #6819
  • Move CompilerResources from internal to public API - #6811
  • Remove ruleContext property from Rule constructor - #6810
  • Remove deprecated XML tag support - #6808
  • Move ActiveByDefault annotation from internal to public API - #6807
  • Move RequiresTypeResolution annotation from internal to public API - #6806
  • Move Configuration annotation from internal to public API - #6805
  • Core handles active rules - #6782
  • Remove never used function - #6775
  • Remove Finding.id - #6774
  • Remove BaselineProvider.id() - #6773
  • Remove messageOrDescription - #6771
  • Rule receives its own configuration - #6767
  • Add parent config property - #6766
  • Remove default value for parentPath - #6764
  • Make TestConfig final - #6737
  • ConfigAware doesn't need to implement Config - #6736
  • Mandatory config on Rule - #6734
  • RuleSet provides a Factory of rules intead of the rules themselfs - #6733
  • Remove deprecated code on RuleSet - #6726
  • Removed default implementation Extension::id - #6505
  • removed OutputReport::name - #6500
  • Convert DGP tasks to use Property API - #6497
  • Convert DGP extension to use Property API - #6496
  • Stop using data classes in public API - #6477
  • Remove knownPatterns from tooling API - #6467
  • Remove safeAs function - #6463
  • Move ThresholdedCodeSmell to complexity - #6456
  • Remove type from Metric - #6454
  • Remove Metrics from Findings - #6453
  • Remove SingleAssign - #6449
  • Remove SplitPattern and CommaSeparatedPattern - #6448
  • Remove more code that was marked as deprecated - #6414
  • Only fail on issues with severity error - #6409
  • Remove maxIssues feature - #6408
  • Remove Severity enum - #6399
  • Remove deprecated constructors for Location - #6397
  • Remove LazyRegex and secondary constructor of Entity - #6396
  • Remove deprecated functions FileProcessListener - #6395
  • Remove deprecated print function in ConsoleReport - #6394
  • Remove deprecated ThresholdRule - #6393
  • Remove deprecated DefaultContext - #6392
  • Remove deprecated secondary constructors of AnnotationExcluder - #6391
  • Remove support for issue weights - #6389
  • Remove deprecated config property excludeAnnotatedFunction in FunctionOnlyReturningConstant - #6380
  • Remove deprecated config property excludeAnnotatedProperties in LateinitUsage - #6379
  • Rename rule UnusedImports to UnusedImport - #6366
  • Remove OptionalWhenBraces rule - #6322
  • Remove withAutoCorrect from ConfigAware - #6315
  • Simplify storing metadata with KtFiles - #6311
  • Delete MultiRule - #6288
  • Rename EmptyKtFile to EmptyKotlinFile - #6286
  • Stop applying treeCopyHandler extension in analysis environment - #6255
  • Replaced "threshold" property of CouldBeSequence rule by "allowedOperations". - #6212
  • Replaced "thresholdX" properties of TooManyFunctions rule by "allowedFunctionsX". - #6211
  • Replaced "threshold" property of StringLiteralDuplication rule by "allowedDuplications". - #6208
  • Replaced "threshold" property of NestedScopeFunctions rule by "allowedDepth". - #6207
  • Replaced "threshold" property of NestedBlockDepth rule by "allowedDepth". - #6205
  • Replaced "threshold" property of NamedArgumentsRule rule by "allowedArguments". - #6204
  • Replaced "threshold" property of MethodOverloading rule by "allowedOverloads" - #6203
  • Replaced "functionThreshold/constructorThreshold" properties of LongParameterList rule. - #6195
  • Replaced "threshold" property of CyclomaticComplexMethod rule by "allowedComplexity" - #6189
  • Replaced "threshold" property of LargeClass rule by "allowedLines" - #6188
  • Replaced "threshold" property of ComplexCondition rule by "allowedComplexity" - #6187
  • Replaced "threshold" property of ComplexInterface rule by "allowedDefinitions" - #6185
  • Replaced "threshold" property of CognitiveComplexMethod rule by "allowedComplexity" - #6184
  • Replaced "threshold" property of LongMethod rule by "allowedLines" - #6181
  • Remove deprecated elements from Gradle plugin - #6180
  • Changed name of "FunctionMinLength" rule to "FunctionNameMinLength" - #6161
  • Changed name of rule from SpacingBetweenPackageAndImports to SpacingAfterPackageDeclaration - #6133
  • Changed name of rule from MayBeConst to MayBeConstant - #6132
  • Changed name of rule from FunctionMaxLength to FunctionNameMaxLength - #6131

Changes

  • Notification as a class - #8585
  • Add compilation output to friendPaths by default - #8569
  • Use buildconfig plugin instead of manifest/properties files to store values generated at build time - #8563
  • Refactor AnalysisFacade - #8559
  • Add missing tests for processors in :detekt-metrics - #8548
  • Refactor Detektion implementations in core - #8547
  • Change package of :detekt-rules-style to dev.detekt.rules.style - #8543
  • Do not put default into the yaml file when it is dynamic. - #8523
  • Add tests to FindingAssert - Prerequisites - #8514
  • Handle class symbols to get the class id - #8506
  • Migrate RedundantSuspendModifier rule to Analysis Api - #8497
  • Change package of :detekt-rules-complexity to dev.detekt.rules.complexity - #8492
  • Change package of :detekt-metrics to dev.detekt.metrics - #8490
  • Change package of :detekt-core to dev.detekt.core - #8489
  • Migrate UnnecessaryBracesAroundTrailingLambda to Analysis API - #8482
  • Change package of :detekt-formatting to dev.detekt.rules.ktlintwrapper - #8472
  • Correct detekt-core dependencies - #8466
  • Correct detekt-cli dependencies - #8465
  • Correct detekt-compiler-plugin dependencies - #8464
  • Correct detekt-api dependencies - #8463
  • Add missing kotlin-compiler API dependency where required - #8462
  • Add required project dependencies to detekt-rules and detekt-rules-* testImplementation configuration - #8460
  • Remove opt-ins that are no longer required - #8449
  • Migrate OptionalUnit to Analysis API - #8436
  • Migrate ElseCaseInsteadOfExhaustiveWhen to Analysis API - #8435
  • Migrate CanBeNonNullable to Analysis API - #8428
  • Migrate ObjectLiteralToLambda to Analysis API - #8427
  • Correct detekt-report-html dependencies - #8399
  • Add kotlin-compiler testImplementation dependency to all rules projects - #8398
  • Correct detekt-report-md dependencies - #8397
  • Correct detekt-generator dependencies - #8396
  • Create a DAGP dependency bundle for junit-jupiter - #8395
  • Create :detekt-test-assertj - #8388
  • Migrate CoroutineLaunchedInTestWithoutRunTest to Analysis API - #8426
  • Expand FindingAssert - #8418
  • Migrate IgnoredReturnValue to Analysis API - #8415
  • Migrate UnnecessaryAny to Analysis API - #8414
  • Migrate ExplicitCollectionElementAccessMethod to Analysis API - #8412
  • Migrate UnusedUnaryOperator to Analysis API - #8408
  • Migrate UnnecessaryLet to Analysis API - #8407
  • Remove KDocImpl import - #8394
  • Properly configure test suite in detekt-sample-extensions - #8393
  • Remove unused dependencies - #8387
  • Change package of :detekt-cli to dev.detekt.cli - #8383
  • Make FullQualifiedNameGuesser internal - #8378
  • Rename DetektReport to DetektCompilerPluginReport to avoid clash when merging packages - #8360
  • Move dependencies to runtime classpath where possible - #8357
  • Move detekt-api/src/testFixtures to dev.detekt.api.test - #8354
  • Use Kotlin language version 1.8 in DGP - #8347
  • Fix broken URL on performance page - #8342
  • Bump DGP API version to 1.7 - #8339
  • Migrate MissingUseCall to Analysis API - #8332
  • Migrate SleepInsteadOfDelay to Analysis API - #8331
  • Migrate NonBooleanPropertyPrefixedWithIs to Analysis API - #8330
  • Migrate UnusedPrivateFunction to Analysis API - #8329
  • Migrate UnusedPrivateProperty to Analysis API - #8328
  • Migrate UnusedVariable to Analysis API - #8327
  • Migrate SpreadOperator to Analysis API - #8326
  • Migrate NonBooleanPropertyPrefixedWithIs to Analysis API - #8325
  • Migrate LibraryCodeMustSpecifyReturnType to Analysis API - #8324
  • Migrate UnnamedParameterUse to Analysis API - #8321
  • Migrate UnusedImport to Analysis API - #8318
  • Migrate NullCheckOnMutableProperty to Analysis API - #8317
  • Migrate MissingSuperCall to Analysis API - #8316
  • Migrate PropertyUsedBeforeDeclaration to Analysis API - #8314
  • Add ExpressionOperandWrapping rule - #8308
  • Add ContextReceiverListWrapping rule - #8307
  • [ForbiddenMethodCall] Fix false positive with getters and setters - #8300
  • Migrate ForbiddenMethodCall to Analysis API - #8296
  • Don't fail for code that generate no output - #8294
  • Setup AA session in production mode - #8293
  • Configure publishing for ktlint-repackage - #8292
  • Forbid to call lint with RequiresAnalysisApi rules - #8291
  • Migrate SuspendFunInFinallySection to Analysis API - #8290
  • Migrate InjectDispatcher to Analysis API - #8289
  • Migrate NestedScopeFunctions to Analysis API - #8284
  • Migrate ForbiddenNamedParam to Analysis API - #8283
  • Migrate UnnecessaryInnerClass to Analysis API - #8278
  • Migrate AbstractClassCanBeInterface to Analysis API - #8277
  • Migrate AbstractClassCanBeConcreteClass to Analysis API - #8276
  • Migrate UnnecessaryFilter to Analysis API - #8274
  • Migrate ForbiddenAnnotation to Analysis API - #8273
  • Migrate ForbiddenVoid to Analysis API - #8272
  • Migrate UseDataClass to Analysis API - #8271
  • Migrate UselessCallOnNotNull to Analysis API - #8269
  • Migrate RedundantExplicitType to Analysis API - #8267
  • Migrate MultilineLambdaItParameter to Analysis API - #8266
  • Migrate NestedScopeFunctions to Analysis API - #8264
  • Migrate SuspendFunWithCoroutineScopeReceiver to Analysis API - #8259
  • Migrate SuspendFunWithFlowReturnType to Analysis API - #8258
  • Migrate NullableBooleanCheck to Analysis API - #8257
  • Migrate MaxChainedCallsOnSameLine to Analysis API - #8256
  • Migrate UseCheckOrError to Analysis API - #8250
  • Migrate UseEmptyCounterpart to Analysis API - #8249
  • Migrate UnnecessaryReversed to Analysis API - #8248
  • Migrate UnsafeCast to Analysis API - #8247
  • Migrate UnsafeCallOnNullableType to Analysis API - #8246
  • Migrate UnreachableCode to Analysis API - #8245
  • Migrate UnreachableCatchBlock to Analysis API - #8244
  • Migrate UnnecessarySafeCall to Analysis API - #8243
  • Migrate UnnecessaryNotNullOperator to Analysis API - #8242
  • Migrate ImplicitDefaultLocale to Analysis API - #8241
  • Migrate HasPlatformType to Analysis API - #8240
  • Migrate ExitOutsideMain to Analysis API - #8239
  • Migrate DoubleMutabilityForCollection to Analysis API - #8237
  • Migrate DontDowncastCollectionTypes to Analysis API - #8236
  • Migrate Deprecation to Analysis API - #8235
  • Migrate CharArrayToStringCall to Analysis API - #8234
  • Migrate CastToNullableType to Analysis API - #8233
  • Migrate AvoidReferentialEquality to Analysis API - #8232
  • Migrate RedundantHigherOrderMapUsage to Analysis API - #8230
  • Migrate UseAnyOrNoneInsteadOfFind to Analysis API - #8229
  • Migrate UseSumOfInsteadOfFlatMapSize to Analysis API - #8228
  • Migrate ForbiddenAnnotation to AA - #8227
  • Migrate UseIfEmptyOrIfBlank to Analysis API - #8226
  • Migrate UseOrEmpty to Analysis API - #8225
  • Migrate DoubleNegativeExpression to AA - #8224
  • Migrate UseIsNullOrEmpty to Analysis API - #8223
  • Migrate LongParameterList to AA - #8220
  • Refactor ReplaceSafeCallChainWithRun with the analysis api - #8218
  • Refactor ReturnFromFinally with the analysis api - #8217
  • Migrate ErrorUsageWithThrowable to AA - #8216
  • Migrate the InstanceOfCheckForException to use Analysis Api - #8215
  • Refactor ObjectExtendsThrowable with the analysis api - #8214
  • Migrate MemberNameEqualsClassName to Analysis API - #8202
  • Migrate BooleanPropertyNaming to Analysis API - #8201
  • Migrate ArrayPrimitive to Analysis API - #8199
  • Migrate UseRequire to Analysis API - #8198
  • Migrate CouldBeSequence to Analysis API - #8197
  • Migrate UseCheckNotNull to Analysis API - #8193
  • Migrate UseRequireNotNull to Analysis API - #8192
  • Migrate ImplicitUnitReturnType to Analysis API - #8191
  • Add config(ignoreEnumEntries) to ignore enum entries from UndocumentedPublicProperty - #8189
  • Add support for mixed types(string and ValueWithReason) in yml - #8188
  • use gradle wrapper in contribution docs - #8187
  • Rename Rule to RuleName - #8184
  • Migrate NamedArguments to Analysis API - #8179
  • Make CloseableWrapper implement AutoCloseable - #8176
  • Repackage Kotlin Analysis API & Standalone API separately - #8175
  • Migrate UnnecessaryNotNullCheck to Analysis API - #8174
  • Migrate NullableToStringCall to Analysis API - #8173
  • Migrate CastNullableToNonNullableType to Analysis API - #8172
  • Add Analysis API version of isNullable utility function - #8171
  • Use Java 21.0.4 in CI - #8169
  • Migrate MapGetWithNotNullAssertionOperator to Analysis API - #8157
  • Add RequiresAnalysisApi interface - #8156
  • Fully configure standalone Analysis API session - #8154
  • Show diagnostic errors on console when using Analysis API - #8153
  • Update style tests to be compatible with Analysis API snippet compilation - #8137
  • Fix KGP deprecation - #8132
  • Add workaround for KT-71706 - #8115
  • Initialize Gradle configurations lazily - #8111
  • Make createDefaultAnalysisAPISession a function - #8107
  • Don't expose KotlinCoreEnvironment in EnvironmentAware - #8106
  • Remove direct usage of KotlinCoreEnvironment in KtCompiler - #8105
  • Add helpUri on SARIF report - #7974
  • Use the version url for link the rules' documentation - #7973
  • Report ignored return values of functions that return a lambda - #7967
  • Enable TrailingCommaOnDeclarationSite by default - #7957
  • Enable TrailingCommaOnCallSite by default - #7956
  • Fix ktlint doc URL for SpacingAroundSquareBrackets - #7953
  • Add wrapper for WhenEntryBracing ktlint rule - #7952
  • Enable MultilineLoop by default - #7951
  • Enable FunctionTypeModifierSpacing by default - #7950
  • Enable FunctionLiteral by default - #7949
  • Enable FunctionExpressionBody by default - #7948
  • Enable ConditionWrapping by default - #7947
  • Enable ClassSignature by default - #7946
  • Enable ChainMethodContinuation by default - #7945
  • Enable BinaryExpressionWrapping by default - #7944
  • Improve tests - #7941
  • Enable BackingPropertyNaming by default - #7940
  • Compile Gradle plugin with latest 2.0.x release - #7932
  • Don't count a scoped assignment as a non guard for ReturnCount - #7931
  • Add a note to use compileOnly to depend on detekt-api - #7907
  • Configurable additional operators - #7888
  • Faster MaxLineLength - #7882
  • [ArgumentListWrapping] Fix type in paremeter - #7881
  • [Deprecation] Add config ignoreImport - #7878
  • Ensure that the correct lint function is called for the passed rule - #7874
  • Remove space in the end of a description - #7872
  • Remove open from CodeSmell - #7868
  • Report the rules used by generate a detekt report and use it on the sarif report - #7866
  • Extract getRules outside Analyzer - #7865
  • ExpressionBodySyntax: don't report if multiple returns in when expressions (Closes #7829) - #7858
  • UseDataClass: do not report on expect classes - #7857
  • Fix InjectDispatcher false positives - #7797
  • Warn for rules used with multiInstance when no bindingContext - #7776
  • Add RuleInstance url - #7775
  • [CoroutineLaunchedInTestWithoutRunTest] Use isCoroutineScope and isCoroutinesFlow - #7770
  • Add signin plugin for Gradle plugin portal dist - #7760
  • [UnnamedParameterUse] - Fixes #7436 add ignore matching name - #7758
  • Map EmptyList to List - #7753
  • [UnnecessaryParentheses] Allow float/double without integer part - #7751
  • Fix error in paths filtering for detekt-cli - #7733
  • Enable Isolated Projects for Gradle tests by default - #7731
  • Fix ThrowingExceptionsWithoutMessageOrCause false positive - #7715
  • Make "detekt-sample-extensions" project self-contained - #7714
  • Remove helpUri from SARIF output - #7686
  • Remove version references from SARIF output - #7676
  • Remove originalUriBaseIds from SARIF report output - #7667
  • Update schema attribute for SARIF 2.1.0 Errata 01 - #7666
  • Stop explicitly creating generated config parent dirs - #7663
  • Reference custom Gradle configurations lazily - #7645
  • Sort results in compiler plugin by column:line - #7637
  • Issue #7634: Make UndocumentedPublicClass configurable to flag `com… - #7635
  • Fix redundant empty tags in baseline XML - #7625
  • Remove ThresholdedCodeSmell - #7592
  • Make ForbiddenSuppress un-suppressable - #7590
  • ExplicitCollectionElementAccessMethod: fix false positive when Map put has 3 arguments - #7563
  • Automatically handle "multiPlatformEnabled" option in JVM compilation analysis tasks - #7539
  • Add ignoreInternal config to TooManyFunctions - #7537
  • html report doesn't depend on ktElement any more - #7512
  • md report doesn't depend on ktElement any more - #7511
  • Path issue relative - #7510
  • UnnecessaryReversed style rule - #7509
  • Add alias for EnumNaming and EnumEntryNameCase - #7497
  • Duplicate Entity so it can be different in CodeSmell and Issue - #7496
  • Ensure that basePath is always absolute - #7495
  • Show the number of compiler issues found while analysing code - #7493
  • Use compat functions where Gradle version checks are required - #7483
  • Switch to Shadow plugin fork - #7473
  • Remove hash from class name in debug output - #7446
  • BracesOnIfStatements: fix false-positive when chained - #7444
  • Add BigDecimal(kotlin.String) to ForbiddenMethodCall - #7435
  • Exclude non-existent paths from classpath input - #7432
  • Use isExplicitApiModeActive in OptionalUnit rule - #7430
  • Update minor logic for checking isExplicitApiModeActive - #7429
  • Add enum entry check in UndocumentedPublicProperty - #7426
  • Use the anchor which is already present before - #7423
  • Add alias PropertyName for VariableNaming rule - #7422
  • Automatically handle explicit API option in JVM compilation analysis tasks - #7418
  • Automatically handle "noJdk" option in JVM compilation analysis tasks - #7417
  • Automatically handle opt ins in JVM compilation analysis tasks - #7416
  • Don't automatically add reflect & stdlib to classpath via Gradle - #7415
  • Automatically handle friend paths in JVM compilation analysis tasks - #7409
  • Allow passing extra compiler arguments when configuring compiler - #7408
  • Use Kotlin's CLI args parser to parse & configure language settings - #7403
  • Allow passing API version to compiler config - #7399
  • Set task defaults using withType convention - #7398
  • Handle non-existent baseline file handling at task execution - #7397
  • #7360: Add 'assign' to operatorSet of UnusedImport - #7361
  • Set forceMultilineWhenChainOperatorCountGreaterOrEqualThan default to 4 - #7358
  • Apply default values to ConfigurableFileCollections with conventions - #7356
  • Add missing config options to formatting rules - #7352
  • Use RuleInstance.id instead of RuleInstance.name - #7347
  • Fix small corner-case in "SerialVersionUIDInSerializableClass" rule, … - #7346
  • Update aliases - #7325
  • Move guard clause helpers to detekt-rules-style - #7309
  • Remove unused constant ALLOWED_EXCEPTION_NAME - #7307
  • SwallowedException: fix false positive when exception is used as a receiver - #7288
  • IgnoredReturnValue honors ignoreReturnValueAnnotations on parent - #7285
  • NamedArguments: fix false positive on spread varargs - #7283
  • Rewrite MaxLineLength & TrailingWhitespace to avoid problematic offset calcs - #7270
  • Remove hasCommentInside functions - #7269
  • Remove isUsedForNesting function - #7268
  • Simplify implementation of InvalidRange rule - #7267
  • Change how we instantiate the rules - #7262
  • Remove getLineAndColumnInPsiFile function - #7261
  • Use detekt's Location path for compiler plugin output - #7256
  • Remove PsiFile.absolutePath - #7254
  • Remove line separator detection logic - #7251
  • Stop creating in-memory KtFile when file path is provided - #7250
  • Set compiler JDK home to java.home by default - #7247
  • Remove unused compactWithSignature - #7244
  • Move report base path handling to OutputReport - #7234
  • Add TC for extension method for RedundantSuspendModifierSpec - #7225
  • 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
  • Move helper functions to test fixtures - #7211
  • Publish detekt-compiler-plugin-all to Maven and GH Releases - #7179
  • Move generateBindingContext to detekt-parser - #7175
  • versioned default detekt config file link - #7161
  • Disable Gradle home cache cleanup - #7155
  • Stricter paths - #7147
  • No nullable line separator - #7145
  • Support rangeUntil operator for UnusedImport rule - #7104
  • Move suppressions to core - #7101
  • Allow to overwrite the rule id - #7099
  • Improve cli error message - #7096
  • generator: Make --documentation and --config optional - #7095
  • Rename Finding2 to Issue - #7090
  • UnusedPrivateProperty improvements and refactoring out new UnusedVariable rule - #7089
  • UselessPostfixExpression - Fix #7037 false positive postfix - #7084
  • Don't use Entity.ktElement on sarif report - #7078
  • Remove HasEntity - #7067
  • Isolate detekt classpath from Gradle runtime on workers - #7060
  • Improve logging configs - #7055
  • Allow to enable allRules = true and buildUponDefaultConfig = true - #7054
  • Revert "Improve our Sarif merger task to support other sarif reports" - #7052
  • Require Gradle 7.4.2 before throwing VerificationException - #7049
  • Improve our Sarif merger task to support other sarif reports - #7043
  • Update NoEmptyClassBody.kt - #7033
  • Don't allow invalid Source Locations - #7030
  • Refactor compilation analysis task setup - #7016
  • Move exitcode to cli - #7015
  • Use consistent conventions for KMP & source set report names - #7012
  • Simplify PathFilters - #7010
  • Remove unused CliArgs factory - #6997
  • UnusedPrivateClass: don't report if private classes are used for type conversion - #6995
  • Update broken link in SpreadOperator/ForEachOnRange - #6992
  • [Re-opened] Refactor TestFactory - #6978
  • Set detekt report default names based on task name when using KMP - #6957
  • RedundantSuspendModifier: do not report when the function has 'actual' modifier - #6951
  • Simplify MessageCollectorExtensions - #6915
  • Move from gradle/gradle-build-action to gradle/actions/setup-gradle - #6912
  • Report rule's default severity in sarif - #6893
  • Add @Deprecated to overridden functions that are deprecated in interface - #6891
  • Correctly pass an FqName to startsWith - #6890
  • Add ignoreAnnotatedFunctions to TooManyFunctions - #6875
  • Remove severity from the Rule - #6872
  • Split Finding in two different classes - #6871
  • Don't use value class for RuleSet.Id - #6861
  • Remove List<Finding>.assert() extension function - #6856
  • Make the abi a bit cleaner - #6855
  • Fix false positive on it usages when type parameter is specified - #6850
  • Simplify the creation of Config - #6848
  • Allow to enable allRules = true and buildUponDefaultConfig = true - #6844
  • Implement subConfigKeys() for Config - #6842
  • Fix exclusion at ruleset level - #6831
  • Remove PRIMITIVES from public API - #6813
  • Remove UnstableApi annotation - #6804
  • Fix test at CorrectableRulesFirstSpec - #6791
  • EmptyKtFile : add ability to ignore package statements - #6790
  • Report violations of ThrowsCount also in override functions (#6752) - #6753
  • Add BigDecimal's double constructor to ForbiddenMethodCall's default configuration - #6744
  • Display dynamic --jvm-target values when using --help flag - #6685
  • Improve UnnamedParameterUse message (change CALL_EXPRESSION to actual function name) - #6681
  • Fix #6665 by re-adding a few used toStrings - #6678
  • Fix CastToNullableType warning on same or parent type - #6677
  • Fix by checking the existence of label in previous statements - #6671
  • Follow-up #6572: Re-order test classpath to load correct Logger as workaround for KT-60813 - #6636
  • Update the ruleset regex to allow numbers - #6635
  • Also check USELESS_ELVIS in UnreachableCode - #6624
  • Follow-up #6468: Fix all ktlint links for 1.0.1 (on vNext detekt site) - #6622
  • Explain #5713: KDoc line breaks are whitespaces - #6621
  • 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
  • Fix by adding last method call to the set - #6567
  • Remove check for deprectated functions toUpperCase and toLowerCase - #6548
  • Create DetektBasePlugin - #6547
  • Configure DGP as a public module - #6533
  • Fix inputstream leaking file descriptor in Gradle - #6519
  • chore: Make misspelled property error message more actionable - #6493
  • ForbiddenMethodCall - Handle sequence of overridden methods - #6478
  • Update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.11.2 - #6473
  • Function to return supported Kotlin version - #6472
  • Stop declaring autocorrect support for PackageName rule - #6469
  • Setup consistent configuration for modules with public APIs - #6462
  • Simplify ThresholdedCodeSmell - #6455
  • Move RuleSetConfigProperty to formatting - #6451
  • Move SimpleNotification to core - #6450
  • Fix false negative IgnoredReturnValue with scope functions - #6446
  • UnconditionalJumpStatementInLoop: don't report a conditional break in a single body expression - #6443
  • UnnecessaryFilter: add predicate functions - #6435
  • Improve UnnecessaryFilter - #6431
  • MatchingDeclarationName now supports platofrm suffixes - #6426
  • Ignore complexity of local function when calculating cyclomatic complexity by default - #6421
  • Disable deprecated rules when using allRules flag. - #6413
  • Fix reporting unused imports at file level - #6390
  • Update github/codeql-action digest to a09933a - #6386
  • Update actions/setup-node digest to bea5baf - #6385
  • Work with deprecations in a type safe manner - #6382
  • OutdatedDocumentation - Detect param which private property documented as property - #6372
  • Fixes false positive of trailing whitespaces in kdoc - #6370
  • Suggest ..< instead of until - #6369
  • Check format extension function in ImplicitDefaultLocale - #6368
  • Fix false +ve when lambda is un-inferrable - #6367
  • NullableToStringCall: fix false negative in lambda - #6352
  • Mark MapGetWithNotNullAssertionOperator rule to require type resolution. - #6345
  • MaybeConstant: Remove unused alias - #6339
  • Correctly set scheme for URIs in the SARIF report output - #6331
  • Require basePath when setting up environment - #6323
  • Store absolute path names as metadata with each KtFile - #6310
  • Skip entire subtrees while scanning for source files - #6302
  • Re-apply #6160 to the versioned docs - #6289
  • Add missing jdkHome and languageVersion properties to DetektCreateBaselineTask - #6284
  • Update JamesIves/github-pages-deploy-action digest to a1ea191 - #6280
  • Reflect Java 20 support in CLI help output - #6277
  • Update dependency gradle to v8.2.1 - #6274
  • Use more appropriate methods to compile KtFiles - #6271
  • Shade third party dependencies in compiler plugin uber JAR - #6270
  • Support passing multiple config files to compiler plugin - #6269
  • Make InvalidRange aware of rangeUntil operator - #6264
  • Kotlin 1.9.0 refactor - #6260
  • Implement rules introduced in ktlint 0.50.0 - #6253
  • Remove inaccurate statement about autocorrect capability - #6252
  • Update dependency gradle to v8.2 - #6241
  • MaxChainedCallsOnSameLine: don't count class references as chained calls - #6224
  • Fix typo in ReturnCount rule documentation - #6217
  • Standardize rule code sample spacing - #6216
  • Update github/codeql-action digest to 6c089f5 - #6215
  • CanBeNonNullable: Fix false positive when property is defined after assignment - #6210
  • Add ..< and rangeTo in the ForEachOnRange rule - #6197
  • SleepInsteadOfDelay - Find the parent for suspend check - #6191
  • Don't report UseDataClass if class contains non-property parameters - #6173
  • Update dependency org.kohsuke:github-api to v1.315 - #6172
  • Update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.11 - #6171
  • Allow documenting public fun name when same private variable is present - #6165
  • Find range call using recursion - #6164
  • Improvement to compiler plugin page - #6160
  • Respect RunAfterRule constraint from ktlint - #6159
  • Add allowedWithLengthLessThan and remove `excludeStrin… - #6156
  • StringShouldBeRawString: Ignore replaceIndent and prependIndent - #6154
  • Update JamesIves/github-pages-deploy-action digest to 22a6ee2 - #6152
  • UnusedPrivateProperty: Fix false postive by ignoring data classes - #6151
  • Assume platform type as non nullable - #6149
  • PropertyUsedBeforeDeclaration: fix false positive in nested/inner class - #6139
  • Fix typo in compiler plugin doc for 1.23.0 - #6138
  • Fix typo in compiler plugin doc - #6135
  • Clarify PropertyUsedBeforeDeclaration message - #6126
  • Dynamically set the ktlint version in rule docs - #6103
  • Replace KtLintMultiRule - #6094
  • Improve generateDocumentation - #5853
  • Created new rule class that allows for configurable debt time - #4385

Dependency Updates

  • Update dependency com.android.tools.build:gradle to v8.13.0 - #8586
  • Update dependency com.android.tools.build:gradle to v8.12.2 - #8552
  • Remove explicit kotlin-stdlib dependency - #8461
  • Update kotlin monorepo to v2.2.10 - #8453
  • Update dependency com.android.tools.build:gradle to v8.12.0 - #8392
  • Update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.7.1 - #8335
  • Update dependency org.snakeyaml:snakeyaml-engine to v2.10 - #8295
  • Update dependency com.android.tools.build:gradle to v8.11.1 - #8288
  • Update Poko to v0.19.3 - #8211
  • fix(deps): update dependency com.android.tools.build:gradle to v8.11.0 - #8208
  • fix(deps): update dependency com.android.tools.build:gradle to v8.10.1 - #8149
  • chore(deps): update dependency gradle to v8.14.1 - #8141
  • fix(deps): update poko to v0.18.7 - #8131
  • fix(deps): update dependency com.android.tools.build:gradle to v8.10.0 - #8123
  • chore(deps): update dependency gradle to v8.14 - #8108
  • Fix packaging of Kotlin Analysis API dependencies - #8097
  • fix(deps): update poko to v0.18.6 - #8094
  • fix(deps): update poko to v0.18.5 - #8063
  • fix(deps): update poko to v0.18.4 - #8058
  • fix(deps): update dependency dev.drewhamilton.poko:poko-annotations to v0.18.3 - #8055
  • Compile test snippets with Analysis API - #8037
  • Use kotlin-scripting-compiler dependency for kotlin-main-kts - #8034
  • Create detekt-kotlin-analysis-api package - #8024
  • fix(deps): update dependency com.android.tools.build:gradle to v8.8.2 - #7999
  • chore(deps): update dependency gradle to v8.13 - #7998
  • fix(deps): update slf4j monorepo to v2.0.17 - #7997
  • Switched to use ktlint version ref for the ruleset - #7996
  • fix(deps): update dependency com.android.tools.build:gradle to v8.8.1 - #7936
  • fix(deps): update dependency org.snakeyaml:snakeyaml-engine to v2.9 - #7892
  • fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-html-jvm to v0.12.0 - #7891
  • fix(deps): update dependency org.semver4j:semver4j to v5.5.0 - #7861
  • fix(deps): update kotlinx-coroutines monorepo to v1.10.1 - #7854
  • fix(deps): update dependency prism-react-renderer to v2.4.1 - #7831
  • fix(deps): update dependency dev.drewhamilton.poko:poko-annotations to v0.18.2 - #7813
  • chore(deps): update plugin dev.drewhamilton.poko to v0.18.2 - #7812
  • chore(deps): update codecov/codecov-action action to v5 - #7789
  • chore(deps): update github/codeql-action digest to ea9e4e3 - #7788
  • fix(deps): update dependency org.jetbrains:annotations to v26.0.1 - #7726
  • chore(deps): update dependency gradle to v8.10.2 - #7668
  • fix(deps): update dependency org.snakeyaml:snakeyaml-engine to v2.8 - #7643
  • chore(deps): update dependency gradle to v8.10 - #7546
  • fix(deps): update dependency com.android.tools.build:gradle to v8.5.2 - #7525
  • chore(deps): update dependency gradle to v8.9 - #7452
  • fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v1.3.1 - #7431
  • fix(deps): update slf4j monorepo to v2.0.13 - #7169
  • fix(deps): update dependency com.android.tools.build:gradle to v8.3.2 - #7158
  • chore(deps): update plugin nexuspublish to v2 - #7138
  • Update JaCoCo to 0.8.12 - #7121
  • Use constrained syntax to declare plugins - #7088
  • Update dependency com.android.tools.build:gradle to v8.3.1 - #7070
  • Housekeeping in Gradle plugin - #7062
  • Pin gradle/actions action to ec92e82 - #6929
  • Update gradle/gradle-build-action action to v3 - #6911
  • Update dependency com.android.tools.build:gradle to v8.2.2 - #6901
  • fix(deps): update kotlin monorepo to v1.9.22 - #6746
  • fix(deps): update dependency org.jetbrains:annotations to v24.1.0 - #6629
  • Update tested AGP version to 8.1.3 - #6610
  • Switch to kctfork for Kotlin compilation testing - #6589
  • chore(deps): update dependency org.jetbrains.dokka to v1.9.10 - #6549
  • Update to JCommander 1.83 - #6498
  • Update org.slf4j to v2.0.9 - #6461
  • Update dependency io.mockk:mockk to v1.13.7 - #6387
  • Fix #6334: githubRelease.releaseAssets: migrate from hardcoded paths to cross-project artifact dependencies - #6337
  • Update dependency org.jetbrains.kotlinx:kotlinx-html-jvm to v0.9.1 - #6279
  • Replace reflections library with classgraph library - #6267
  • Switch to SLF4J 2.x - #6266
  • Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.2 - #6246
  • Update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v0.50.0 - #6239
  • Update plugin gradleVersions to v0.47.0 - #6202
  • Update kotlin monorepo to v1.8.22 - #6192
  • Update com.android.tools.build - #6137

Housekeeping & Refactorings

  • Don't add runtime dependencies to plugin under test classpath in min version test - #8135
  • Remove use of ios() target shortcut in tests - #8134
  • Fix a minor typo in UnusedImport - #7961
  • Remove unnecessary when on core related with CodeSmell - #7869
  • Refactor Analyzer - #7837
  • Reduce duplication on Analyzer - #7836
  • Refine description of UnnecessaryPartOfBinaryExpression rule - #7802
  • Replace deprecated toUpperCase() with uppercase() - #7800
  • Don't use multiple targets of the same type in tests - #7799
  • Decouple DGP compilation version from the rest of the project - #7798
  • Update PropertiesAware.kt - #7701
  • Remove usage of deprecated interface - #7603
  • Add TC for IgnoredReturnValue for set assign - #7541
  • Use correct lint function - #7504
  • Use sortedByDescending - #7479
  • Improve tests and code of how we instantiate the RuleSets - #7379
  • Improve single rule provider - #7378
  • Improve test code - #7354
  • Remove & forbid org.jetbrains.kotlin.js.* usage - #7318
  • Remove test failing on new compiler diagnostic error - #7302
  • Update noncompliant code of ForbiddenMethodCall - #7297
  • Don't pass FileBasedDeclarationProviderFactory explicitly - #7243
  • Use cleaner Path functions - #7236
  • Improve core tests - #7232
  • Merge logic of baseline result mapping into one class. - #7208
  • Simplify MissingPackageDeclaration implementation - #7205
  • Remove platform core hack to use nio2 - #7187
  • Remove unused file - #7156
  • Make code more readable - #7146
  • Add missing tests on SuppressionSpec.kt - #7109
  • Rewrite Suppressions.kt tests - #7108
  • Refactor Suppressions.kt - #7107
  • Simplify reporters - #7102
  • Move the creation of RuleInfo up - #7100
  • Simplify baseline validation - #7098
  • Improve cli tests - #7097
  • Remove add-opens workaround - #7093
  • Refactor CLI args processing - #7092
  • Refactor TestFactory - #7066
  • Allow to easily add gradle arguments - #7065
  • Reduce repetition on how we check if the Worker Api is enabled - #7064
  • Fix compilation error - #7063
  • Remove Gradle FileCollection usage in ClassLoaderCache - #7061
  • Add failing test for worker API on Gradle 6.8.3 - #7059
  • Revert "Allow to enable allRules = true and buildUponDefaultConfig = true (#6844)" - #7053
  • We no longer have a trim indent by default so this is not needed any more - #7044
  • Split Gradle functional tests by Gradle version - #7036
  • Mini tidy of test config in build files - #7032
  • Bump compileSdk in Android test projects - #7028
  • Gradle report naming refactor - #7013
  • Improve error message - #7008
  • Fix deprecations in Android KMP tests - #6996
  • Simplify TxtOutputReport - #6880
  • Refactor TestFactory - #6877
  • Simplify code - #6859
  • useDefaultConfig on tests - #6841
  • Make fakes more real - #6829
  • Make test pass on JVM 8 - #6817
  • Reduce the usage of mockk - #6816
  • Don't use Config.empty on rule initialisation - #6812
  • Move empty config declaration to its callsite - #6809
  • Fix test snippets for K2 - #6799
  • Inline yaml samples in tests - #6789
  • Remove redundant notCompatibleWithConfigurationCache calls for Dokka tasks - #6786
  • Improve Analyzer tests - #6781
  • Use entries instead of values() on enum class - #6769
  • Use Locale.ROOT instead of Locale.US - #6765
  • Enable MultilineLoop & ConditionWrapping rules - #6741
  • Simplify detekt-test - #6732
  • Don't recreate sequence - #6731
  • Remove RuleSet.visitFile - #6730
  • Simplfy sarirf code - #6729
  • Fix too generic tests - #6724
  • Remove reports from detekt-core dependencies - #6683
  • Enable Kotlin metadata version check for script compilation - #6674
  • Use versionCatalogs extension - #6673
  • Remove workaround for KT-60813 - #6646
  • Add TC for https://github.com/detekt/detekt/issues/6593 - #6596
  • Remove some unused/unnecessary code - #6594
  • Remove redundant association of functional test compilation to main compilation - #6592
  • Remove usage of an internal AGP API - #6565
  • Opt in to ExperimentalCompilerApi in all compilations in compiler-plugin - #6534
  • Avoid applying java-library plugin in DGP functional tests - #6489
  • Remove unused toString call - #6458
  • Remove old code from LibraryCodeMustSpecifyReturnType - #6403
  • Remove obsolete ThresholdRule documentation generation logic - #6402
  • Use modern API to get environment variables - #6353
  • Ensure paths are not used in tests where plain filenames are required - #6287
  • Use pluginManagement to include builds - #6268
  • Fix tests and re-enable :detekt-compiler-plugin:test task - #6265
  • Simple property assignments in KTS - #6251
  • Review file level suppressions in all files - #6130
  • Dont depend on jcommander - #5856

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