All Versions
27
Latest Version
Avg Release Cycle
20 days
Latest Release
21 days ago

Changelog History
Page 1

  • v1.9.0

    May 12, 2020
    🔄 Changelog
    • 📚 Extra documentation added to pitfalls section - #2675
    • 🔧 Use configuration avoidance for withType usages - #2672
    • GuardClause also matches if-with-body that contains a return - #2671
    • Simplify patterns - #2668
    • ✅ Include Kotlin multiplatform test folders to default exclude config - #2667
    • ✂ Remove duplicate MandatoryBracesLoops rule tests - #2665
    • ✂ Remove print statement in MandatoryBracesLoops - #2664
    • ✂ Remove $ as a valid char in class and method names - #2662
    • 🏗 Build detekt executable before publishing it - detekt#2654 - #2659
    • ➕ Add style rule for mandatory braces in for loop bodies - #2658
    • 🚀 Asset in release 1.8.0 is not up-to-date - #2654
    • Rule: Mandatory braces for single-line for loop bodies - #2652
    • 🔧 Use task configuration avoidance for detekt plugin - #2651
    • ➕ Add detekt GitHub action to readme - #2650
    • Don't report unused private properties in expect class - #2646
    • UnusedPrivateMember: don't report parameters in expect/actual functions - #2643
    • UnusedPrivateMembers on expect class - #2636
    • 🔧 Include Kotlin multiplatform test folders to default exclude configuration - #2608

    👀 See all issues at: 1.9.0

  • v1.8.0

    April 20, 2020
    Notable Changes
    • 👍 Most rule properties now support yaml lists next to string's with comma-separated-entries.
    • 🚀 Standalone detekt executable on GitHub release pages
    • 🆕 New rules: UnnecessaryNotNullOperator and UnnecessarySafeCall
    Migration
    • Formatting rules get reported now on the correct lines. The baseline file may need to be adjusted/regenerated.
    • Issues concerning classes and objects are not reported at the identifier. The baseline file may need to be adjusted/regenerated.
    🔄 Changelog
    • 🔧 Use yaml lists in our own configuration and tests - #2623
    • ⚙ Run code coverage as an own action - #2622
    • 🏗 Modularize build script by introducing buildSrc module - #2621
    • *>excludes allow yaml list - #2620
    • Kotlin to 1.3.72 - #2619
    • 🔀 Set failfast to false for pre-merge - #2618
    • 📚 Update documentation - #2617
    • ThrowingExceptionsWithoutMessageOrCause>exceptions allow yaml list - #2616
    • SwallowedException>ignoredExceptionTypes allow yaml list - #2615
    • 📦 ForbiddenPublicDataClass>ignorePackages allow yaml list - #2614
    • LabeledExpression>ignoredLabels allow yaml list - #2613
    • ForbiddenMethodCall>methods allow yaml list - #2612
    • Generate the cli as a stand alone executable - #2607
    • Report class and object violations at the identifier - #2606
    • 🛠 Fix formatting line reporting - #2604
    • 📚 Correct documentation/recommendation of EmptyCatchBlock rule - #2603
    • Incorrect (or unclear) EmptyCatchBlock rule - #2602
    • 👕 Use more lintAndCompile - #2601
    • MagicNumber>ignoredNumbers allow yaml list - #2600
    • ✂ Remove unnecesary symbolic link - #2598
    • WildcardImport>excludeImports allow yaml list - #2596
    • ForbiddenClassName>forbiddenName allow yaml list - #2595
    • 🛠 Fix false positives in UndocumentedPublicProperty - #2591
    • 🛠 Fix false positive in UndocumentedPublicClass - #2588
    • *>Annotated allow yaml lists - #2587
    • ForbiddenComment>values allow yaml list - #2585
    • ExceptionRaisedInUnexpectedLocation>methodNames allow yaml list - #2584
    • ComplexMethod>nestingFunctions allow yaml list - #2583
    • UndocumentedPublicClass false positive for inner types - #2580
    • 🆕 New Rule: UnnecessaryNotNullOperator - #2578
    • 🆕 New Rule: UnnecessarySafeCall - #2574
    • 🆕 New Rule: UnnecessarySafeCall - #2572
    • ➕ Add ignoreAnnotated option to LongParameterList - #2570
    • 🔧 Rule configuration request: Ignore based on annotations - #2563
    • ✅ codecov test coverage report doesn't work correctly - #2558
    • 👌 Support yaml lists in the configuration values - #2498
    • Baseline ignoring MaxLineLength: on 1.0.1 - #1906
    • Formatting rules are reported at wrong line (e.g. MaximumLineLength) - #1843

    👀 See all issues at: 1.8.0

  • v1.7.4

    April 03, 2020
    Notable Changes

    🔌 The last Gradle plugin version was referencing 1.7.2 instead of 1.7.3.
    🛠 This was fixed and specifying the toolVersion is not necessary anymore.

    detekt { toolversion = "1.7.3"}
    
    🔄 Changelog
    • ⏪ Revert warning: jcenter is missing (#2550) - #2576
    • ➕ Add additional task input for plugin version task - #2575
    • jcenter() requirement - #2571

    👀 See all issues at: 1.7.4

  • v1.7.3

    April 01, 2020
    🔄 Changelog
    • OptionalWhenBraces: fix false positive with lambda which has no arrow - #2568
    • OptionalWhenBraces: false positive with lambda which has no arrow - #2567
    • 0️⃣ valueOrDefaultCommaSeparated throws a ClassCastException - #2566
    • 1.6.0 -> 1.7.2: java.lang.String cannot be cast to java.util.List - #2561
    • Display actual and threshold values for several metric rules - #2559
    • Return the actual values for complexity rules - #2557
    • 👉 UseCheckOrError/UseRequire: fix false positive with a non-String argument - #2556
    • 👻 InstanceOfCheckForException: do not report when catch blocks do not check for the subtype of an exception - #2555
    • Include statistics for our custom detekt tasks - #2554
    • ✂ Remove unnecesary parentheses - #2553
    • 🛠 Fix console output indentation - #2552
    • Console output is not indented correctly - #2551
    • 🔌 Check jcenter repository present in Gradle plugin - #2550
    • ➕ Adding Detekt to a project from scratch, detektGenerateConfig is broken - #2549
    • Validate Wrapper only on push to master - #2548
    • Cleanup Gradle Folders - #2547
    • 👷 Require CI to pass to run codecov - #2546
    • Export bintray key to publish snapshots - #2544
    • 👀 Activate UseErrorOrCheck rule - #2542
    • ♻️ Refactor build file to sections - #2541
    • False positive: UseCheckOrError - #2514
    • InstanceOfCheckForException should be ignored for catch blocks that is more than an if expression - #1927

    👀 See all issues at: 1.7.3

  • v1.7.2

    March 28, 2020
    🔄 Changelog
    • ✂ Remove ignore:AppVeyor from codecov config - #2540
    • 👉 Use kotlin-stdlib-jdk8 to reduce dependency conflicts - #2527 - #2538
    • ⚡️ Update Gradle plugin-publish to 0.11.0 - #2537
    • ✂ Delete created temp dir automatically on JVM exit - #2536
    • ✂ Delete created temp file automatically on JVM exit - #2535
    • ♻️ Refactor MemberNameEqualsClassNameSpec tests - #2534
    • 🛠 Fix UnnecessaryAbstractClass false-positive - #2533
    • ⚡️ Update GroovyDSL doc to mention input - #2532
    • ⚡️ Update KotlinDSL doc to mention input - #2531
    • 🛠 Fix report for documented data classes property - #2530
    • UndocumentedPublicProperty reported for documented data classes property - #2529
    • 📚 Detekt using gradle documentation out of data - #2528
    • 1.7.1 does not depend on Kotlin 1.3.71 - #2527
    • UnnecessaryAbstractClass false positive for abstractproperties - #2526
    • 🏗 Do not fail the build on config property warnings/deprecations - #2523 - #2525
    • regression 1.7.1, threshhold does not exist - #2523
    • Setup GitHub Actions - #2512

    👀 See all issues at: 1.7.2

  • v1.7.1

    March 26, 2020
    🔄 Changelog
    • UnnecessaryAbstractClass: fix false positive when abstract class has abstract inherited members - #2513
    • UnusedPrivateMember: report unused overloaded operators - #2510
    • 🛠 Fix build compile error resulted from merging two conflicting PRs - #2508
    • ⚡️ Update Kotlin to 1.3.71 - #2507
    • ✂ Remove duplicated test task setup for gradle plugin - #2506
    • ➕ Add LicenceHeaderExtension test to verify resource path loading is supported - #2505
    • Ensure filesystems are created so paths can be gotten - #2504
    • FileSystemNotFoundException in detekt 1.7.0 when using --config-resource - #2503
    • MemberNameEqualsClassName: fix false negative when function has no explicit return type - #2502
    • 👉 Use the system-dependent line separator in NotificationReport - #2497
    • ✂ Remove default print stream - #2496
    • Don't use System.out in the ProgressListeners - #2495
    • 🔌 Make the gradle plugin a sub project again - #2493
    • 🚚 Move test factory outside the main code - #2491
    • Single runner - #2490
    • 🖨 ProcessingSettings - #2489
    • 🖨 Don't use println :detekt-generator - #2488
    • ✅ Simplify tests with StringPrintStream - #2487
    • 👌 Improve tests - #2486
    • 🖨 Use PrinterStream in AstPrinter - #2485
    • Errors running detekt in the detekt project - #2484
    • Unify yml strings - #2482
    • 👉 Use yml arrays to list the ForbiddenImports - #2474
    • ➕ Add date, detekt-version + link to HtmlReport - #2470
    • ♻️ Refactor FindingsReport + FileBasedFindingsReport - #2454
    • The Detekt HTML Report should include date, version number, website link (Feature Request) - #2416
    • ➕ Added validation of constructors to LongParameterList - #2410
    • ⚠ UnusedPrivateMember doesn't report the correct warning count - #1981
    • UnusedPrivateMember should consider overloaded operators - #1444
    • False positive on rule UnnecessaryAbstractClass - #727
    • MemberNameEqualsClassName ignores functions which return a single expression - #655

    👀 See all issues at: 1.7.1

  • v1.7.0

    March 22, 2020
    Notable Changes
    • 🐎 The Gradle plugin should be on par with the CLI performance-wise
    • 👍 Good to know: detekt CLI always supported argument files (java -jar detekt-cli.jar @argsfile)
    • 🆕 New CLI --version flag
    • 🆕 New Rule AbsentOrWrongFileLicense and other rule improvements
    🔄 Changelog
    • ⚡️ Update Travis to use the newest xcode11.3 image - #2480
    • 🔀 Synchronize use of root extension point - #2479
    • 👍 Extend ComplexInterface to support exclusion of private member/functions - #2478
    • ♻️ Minor refactors around --create-baseline - #2477
    • Check primary ctor in UndocumentedPublicProperty - #2475
    • Unify yaml strings - #2472
    • ⚙ Running detektBaseline generates too general exceptions, disabling rules - #2471
    • UndocumentedPublicProperty doesn't check primary constructor - #2468
    • ✂ Remove default implementations of toString() - #2467
    • ✂ Remove tags from core documentation sites - #2466
    • Validate boolean config values - Closes #2045 - #2465
    • ➕ Add test for BaselineHandler - #2462
    • ♻️ Refactor BaselineFormatSpec.kt - #2461
    • ➕ Add tests for BaselineFacade - #2460
    • 🛠 Fix toString() output for Whitelist class - #2459
    • ✂ Remove unused functions in XmlExtensions.kt - #2458
    • ➕ Add test cases for invalid yaml config - #2457
    • ➕ Add edge test cases for ComplexityReportGenerator - #2456
    • Simplify anonymous Detektion object creation - #2455
    • ⚡️ Update trim logic in Debt:toString() - #2453
    • ♻️ Refactor FindingsReport + FileBasedFindingsReport - #2451
    • ✅ Rename tests with _Test prefix to _Spec - #2450
    • ♻️ Refactor HtmlOutputReport - #2449
    • ✅ Simplify UnnecessaryApplySpec test cases - #2448
    • 🔗 Link code samples package for extension guide - #2447
    • ComplexInterface - should it also count private methods? - #2446
    • ⚡️ Update AppVeyor branch conf to comply with Travis - #2445
    • ➕ Add PsiViewer plugin to Contributing guide - #2444
    • UnnecessaryApply: fix false positive when it's used as an expression - #2442
    • ➕ Add detekt-hint to integrations - #2441
    • SwallowedException: fix false negative when using variables - #2436
    • UnnecessaryApply false positive cases - #2435
    • 🚀 Prepare 1.7.0-beta2 release - #2434
    • Parallel invocation of DetektFacade fails spuriously - #2433
    • 🗄 Deprecate BaseRule and state that it will be make sealed - #2365 - #2432
    • ➕ Add License rule - #2429
    • Skip all guard clauses at function start for ReturnCount - Closes #2342 - #2428
    • Fail if --baseline file not found - #2427
    • ➕ Add tests for YamlConfig - #2426
    • Choose a minimum codecov patch coverage ratio - #2425
    • Include ruleset-suppression feature doc - #2424
    • ➕ Add Groovy DSL example for jvmTarget to homepage - #2423
    • ➕ Add groovy dsl example for jvmTarget - Closes #2408 - #2422
    • 🗄 Deprecate hierarchical config - #2421
    • 🗄 Deprecate implementations of Config - #2420
    • ✂ Remove YAML Extension Requirement - #2419
    • ⚡️ Update Spek version to 2.0.10 - #2418
    • file does not end with .yml! - #2417
    • Disable autoCorrect property for all rules if global flag is set to false - #2413
    • 🚀 Release 1.7.0 beta - #2409
    • Stop using kotlin-reflect - #2405
    • Stop compiling with experimental flag - #2404
    • Only post a code coverage patch status to PRs - #2402
    • ExplicitCollectionElementAccessMethod: Don't report on nullable collection - #2401
    • Discourage new Case files - #2399
    • 👷 Use argsfiles for CI - #2397
    • ⚡️ Update to Kotlin v1.3.70 - #2396
    • 🛠 Fix typo in VersionPrinter test - #2395
    • ➕ Add documentation for cli --version flag - #2392
    • ExplicitCollectionElementAccessMethod: Do not report map?.get("foo") - #2391
    • ⚡️ Update Gradle to 6.2.1 - #2390
    • Do not report conditional elvis continue statements - Closes#2388 - #2389
    • False positive: UnconditionalJumpStatementInLoop with elvis operator ?: - #2388
    • ♻️ Refactor getting the detekt version for readability - #2387
    • Create less objects and sets when creating findings id map - #2385
    • ➕ Add --version to cli - #2383
    • ➕ Add --version CLI option - #2382
    • ➕ Add test cases for cli/runners package - #2381
    • Sort and run correctable rules first - #2341 - #2378
    • Should fail if --baseline file does not found? - #2374
    • 🗄 Deprecate rule set methods which expose implementation details of detekt-core - #2366
    • 🗄 Deprecate api's exposing detekt-core implementation details - #2365
    • ReturnCount excludeGuardClauses not working - #2342
    • Mixing autocorrectable and non correctable rules results in obsolete issue locations for reports - #2341
    • 👍 Allow Detekt CLI to take an args file. - #2318
    • Homepage doesn't show Jekyll tags correctly - #2309
    • Call detekt reflectively - #2282
    • Copyright header rule for Kotlin files - #1515 - #2077
    • SwallowedException false negative - #2049
    • Invalid boolean config values are evaluated silently to false - #2045
    • Detekt gradle is much slower than the jar - #2035
    • Cases files are super rigorous to work with - #1089

    👀 See all issues at: 1.7.0

  • v1.7.0-beta2

    March 15, 2020
    Notable Changes
    • 🐎 The Gradle plugin should be on par with the CLI performance-wise
    • 👍 Good to know: detekt CLI always supported argument files (java -jar detekt-cli.jar @argsfile)
    • 🆕 New CLI --version flag
    • 🆕 New Rule AbsentOrWrongFileLicense and other rule improvements
    🔄 Changelog
    • 🗄 Deprecate BaseRule and state that it will be make sealed - #2365 - #2432
    • ➕ Add License rule - #2429
    • Skip all guard clauses at function start for ReturnCount - Closes #2342 - #2428
    • Fail if --baseline file not found - #2427
    • ➕ Add tests for YamlConfig - #2426
    • Choose a minimum codecov patch coverage ratio - #2425
    • Include ruleset-suppression feature doc - #2424
    • ➕ Add Groovy DSL example for jvmTarget to homepage - #2423
    • ➕ Add groovy dsl example for jvmTarget - Closes #2408 - #2422
    • 🗄 Deprecate hierarchical config - #2421
    • 🗄 Deprecate implementations of Config - #2420
    • ✂ Remove YAML Extension Requirement - #2419
    • ⚡️ Update Spek version to 2.0.10 - #2418
    • file does not end with .yml! - #2417
    • Disable autoCorrect property for all rules if global flag is set to false - #2413
    • 🚀 Release 1.7.0 beta - #2409
    • Stop using kotlin-reflect - #2405
    • Stop compiling with experimental flag - #2404
    • Only post a code coverage patch status to PRs - #2402
    • ExplicitCollectionElementAccessMethod: Don't report on nullable collection - #2401
    • Discourage new Case files - #2399
    • 👷 Use argsfiles for CI - #2397
    • ⚡️ Update to Kotlin v1.3.70 - #2396
    • 🛠 Fix typo in VersionPrinter test - #2395
    • ➕ Add documentation for cli --version flag - #2392
    • ExplicitCollectionElementAccessMethod: Do not report map?.get("foo") - #2391
    • ⚡️ Update Gradle to 6.2.1 - #2390
    • Do not report conditional elvis continue statements - Closes#2388 - #2389
    • False positive: UnconditionalJumpStatementInLoop with elvis operator ?: - #2388
    • ♻️ Refactor getting the detekt version for readability - #2387
    • Create less objects and sets when creating findings id map - #2385
    • ➕ Add --version to cli - #2383
    • ➕ Add --version CLI option - #2382
    • ➕ Add test cases for cli/runners package - #2381
    • Sort and run correctable rules first - #2341 - #2378
    • Should fail if --baseline file does not found? - #2374
    • 🗄 Deprecate rule set methods which expose implementation details of detekt-core - #2366
    • 🗄 Deprecate api's exposing detekt-core implementation details - #2365
    • ReturnCount excludeGuardClauses not working - #2342
    • Mixing autocorrectable and non correctable rules results in obsolete issue locations for reports - #2341
    • 👍 Allow Detekt CLI to take an args file. - #2318
    • Call detekt reflectively - #2282
    • Copyright header rule for Kotlin files - #1515 - #2077
    • Detekt gradle is much slower than the jar - #2035
    • Cases files are super rigorous to work with - #1089

    👀 See all issues at: 1.7.0

  • v1.6.0

    February 26, 2020
    Migration

    Rule set authors do not need to exclude their rule set from config validation anymore.
    0️⃣ This will be done by default now.

    If you need to include further config property checks, give the new ConfigValidator api a try.

    🔄 Changelog
    • 📚 Check-in ConfigValidator documentation - #2368
    • ✂ Remove obsolete PathFilter class - #2367
    • Reference coroutines doc for homepage - #2363
    • 📚 [Documentation Request] Coroutine Ruleset - #2362
    • Extend AnnotationExcluder to catch fully qualified annotations - #2361
    • UnnecessaryAbstractClass excludeAnnotatedClasses not working - #2360
    • Replace LinkedList with ArrayDeque - #2358
    • 🛠 Fix detection of CRLF line endings - #2357
    • Introduce new ConfigValidator extensions - #2285 - #2356
    • 👍 Include options to better meet requirements for utility files - #2355
    • Don't normalize file content twice - #2354
    • ✂ Remove unused code in rules/Case.kt - #2351
    • ➕ Add blog post about speeding up a detekt task - #2349
    • ➕ Add tests for setting KtLint's config - #2348
    • ➕ add details into internal validation - #2347
    • 🚚 Minor change in the HTML report: Remove extra space when you copy the file path - #2344
    • detekt does not always inject the required EDITOR_CONFIG_USER_DATA_KEY for ktlint - #2339
    • ✂ Remove duplicate tests for TooManyFunctions rule - #2338
    • ➕ Add EmptyTryBlock rule - #2337
    • 👉 Use requireNotNull for arguments checking - #2336
    • ♻️ Refactor and add tests to Ast- and ElementPrinter - #2335
    • ➕ Add test case for disabled reports - #2334
    • ♻️ Refactor ReportPath:load() - #2333
    • ➕ Add test case for FileProcessorLocator - #2332
    • ➕ Add test cases for Kt(Tree)Compiler - #2331
    • ➕ Add equality test cases for PathFiler - #2330
    • ➕ Add local function test case for MethodOverloading rule - #2328
    • ➕ Add anonymous object expression test case for MethodOverloading rule - #2327
    • Validate Gradle Wrapper - #2326
    • 👉 Use more consistent metrics in HtmlReport - #2325
    • 🛠 Fix ClassCastException in ExplicitCollectionElementAccessMethod - #2323
    • ExplicitCollectionElementAccessMethod crashes - #2322
    • 0️⃣ use same behaviour for valueOrNull as for valueOrDefault - #2319
    • FailFastConfig.valueOrNull should return specified value for active and maxIssues - #2316
    • 🛠 Bugfix: MagicNumber with ignoreNamedArgument and a negative value - #2315
    • More consistent reports - #2291
    • 🔄 Change MatchingDeclarationName to handle utility files - #1500
    • False-positive MagicNumber issue reported when using negative numbers - #530

    👀 See all issues at: 1.6.0

  • v1.5.1

    February 06, 2020
    • ⚡️ Update intro page to deprecate input property - #2311
    • Update codecov run settings to after_n_builds=4 - #2305
    • ⚡️ Update GroovyDSL doc to deprecate input property - #2304
    • ⚡️ Update KotlinDSL doc to deprecate input property - #2303
    • 🛠 Fix ExplicitCollectionElementAccessMethod crash - #2302
    • ExplicitCollectionElementAccessMethod crashes - #2301

    👀 See all issues at: 1.5.1