All Versions
Latest Version
Avg Release Cycle
29 days
Latest Release

Changelog History
Page 4

  • v0.38.0 Changes

    December 03, 2019
    ๐Ÿ’ฅ Breaking
    • Replace the SyntaxToken and SyntaxMap structures used in public SwiftLintFramework APIs with a new SwiftLintSyntaxToken and SwiftlintSyntaxMap wrappers over structures returned from SourceKitten.
      PaulTaykalo #2955
    • None.
    โœจ Enhancements
    • ๐Ÿ‘‰ Make control_statement rule correctable.

    • โž• Add expiring_todo opt-in rule to allow developers to mark their todos with an expiration date.
      Dan Loman #727

    • ๐Ÿ‘Œ Support compilation databases for swiftlint analayze.
      kastiglione #2962

    ๐Ÿ› Bug Fixes
  • v0.37.0 Changes

    November 09, 2019
    ๐Ÿ’ฅ Breaking
    • Replace the [String: SourceKittenRepresentable] dictionaries used in public SwiftLintFramework APIs with a new SourceKittenDictionary wrapper over dictionaries returned from SourceKitten.
      PaulTaykalo #2922

    • โšก๏ธ Update Commandant dependency to version 0.17.0, removing the antitypical/Result dependency in favor of the Swift standard library's Result type.
      JP Simard

    • None.
    โœจ Enhancements
    • ๐Ÿ‘• Speed up many operations by using SwiftLintFile wrapper over File from SourceKitten, caching most members derived from the File.
      PaulTaykalo #2929

    • ๐Ÿ‘• Speed up Swiftlint by using swift enums instead of raw values for dictionary lookups.
      PaulTaykalo #2924

    • Speed up Identical Operands rule by using syntaxmap instead of regular expressions.
      PaulTaykalo #2918

    • ๐ŸŽ Speed up syntax token lookups, which can improve performance when linting large files.

    • Use faster comparison in 'file_types_order' rule.
      PaulTaykalo #2949

    • Speed up recursively executed rules (all AST rules and some others) by avoiding the creation of many intermediate collections when accumulating results.
      PaulTaykalo #2951

    • โž• Add GitHub Actions Logging reporter (github-actions-logging).
      Norio Nomura

    ๐Ÿ› Bug Fixes
    • None.
  • v0.36.0 Changes

    October 24, 2019
    ๐Ÿ’ฅ Breaking
    • ๐Ÿ‘• SwiftLint now requires Swift 5.0 or higher to build.
      JP Simard
    • None.
    โœจ Enhancements
    • Add contains_over_range_nil_comparison opt-in rule to prefer using contains over comparison of range(of:) to nil.
      Colton Schlosser #2776

    • Make contains_over_first_not_nil rule also match first(where:) == nil.
      Colton Schlosser

    • โž• Add two new cases to the Mark rule to detect a Mark using three slashes.
      nvanfleet #2866

    • Add flatmap_over_map_reduce opt-in rule to prefer using flatMap over map { ... }.reduce([], +).
      Marcelo Fabri #2883

    • โž• Add autocorrection to syntactic_sugar.
      Ivan Vavilov

    • ๐Ÿ‘‰ Make toggle_bool rule substitution correctable.

    • Optimize the performance of redundant_void_return rule.
      Marcelo Fabri

    • ๐Ÿ‘Œ Support building with Swift 5.1 on Linux.
      Marcelo Fabri #2874

    • Add raw_value_for_camel_cased_codable_enum opt-in rule to enforce raw values for camel cased Codable String enum cases.
      Marko Pejovic #2888

    • Speedup LetVarWhiteSpacesRule.
      PaulTaykalo #2901

    ๐Ÿ› Bug Fixes
    • ๐Ÿ›  Fix running analyzer rules on the output of builds performed with Xcode 11 or later.
      JP Simard
  • v0.35.0 Changes

    September 03, 2019

    ๐Ÿš€ This is the last release to support building with Swift 4.2.x.

    ๐Ÿ’ฅ Breaking
    • None.
    • None.
    โœจ Enhancements

    Type name rules considers SwiftUI template code.
    ๐Ÿ‘• #2791

    Add no_space_in_method_call rule to validate that there're no spaces
    between the method name and parentheses in a method call.
    Marcelo Fabri

    Add contains_over_filter_count opt-in rule to warn against using
    expressions like filter(where:).count > 0 instead of contains(where:).
    Marcelo Fabri
    ๐Ÿ‘• #2803

    Add contains_over_filter_is_empty opt-in rule to warn against using
    expressions like filter(where:).isEmpty instead of contains(where:).
    Marcelo Fabri

    Add empty_collection_literal opt-in rule to prefer using isEmpty to
    comparison to [] or [:].
    Colton Schlosser
    ๐Ÿ‘• #2807

    ๐Ÿ› Bug Fixes

    ๐Ÿ›  Fixed false positive in colon rule inside guard and ternary operator.
    Andrey Uryadov
    ๐Ÿ‘• #2806

    ๐Ÿš€ Release memory created for sourcekitd requests.
    Colton Schlosser
    ๐Ÿ‘• #2812

    ๐Ÿ›  Fix swiftlint rules output table formatting.
    JP Simard
    ๐Ÿ‘• #2787

    Don't trigger missing_docs violations when implementing deinit.
    Marcelo Fabri
    ๐Ÿ‘• #2690

    ๐Ÿ›  Fix unused_import rule false positive when only operators from the module
    are used.
    Timofey Solonin
    ๐Ÿ‘• #2737

    Avoid triggering redundant_type_annotation rule when declaring
    IBInspectable properties.
    Marcelo Fabri
    ๐Ÿ‘• #2842

    Don't trigger missing_docs violations on extensions.
    Marcelo Fabri
    ๐Ÿ‘• #2851

  • v0.34.0 Changes

    July 19, 2019
    ๐Ÿ’ฅ Breaking
    • ๐Ÿ‘• To enable collecting rules, many breaking changes to SwiftLintFramework's public API were made the Linter type was significantely changed, and a new CollectedLinter type was introduced. Many public SwiftLintFramework APIs that interacted with Linter have also been affected. More new types and protocols were added such as RuleStorage, AnyCollectingRule, CollectingRule, CollectingCorrectableRule. We are not aware of any significant users of the SwiftLintFramework library, so if you are affected by this, please reach out to SwiftLint contributors by filing a GitHub issue about your use case.
      Elliott Williams JP Simard
    • โž• Add a two-stage CollectingRule protocol to support rules that collect data from all files before validating. Collecting rules implement a collect method which is called once for every file, before any file is checked for violations. By collecting, rules can be written which validate across multiple files for things like unused declarations.
      Elliott Williams #2431

    • โž• Add a new unused_declaration analyzer rule to lint for unused declarations. By default, detects unused fileprivate, private and internal declarations. Configure the rule with include_public_and_open: true to also detect unused public and open declarations.
      JP Simard

    • Completely remove the unused_private_declaration rule. Please use unused_declaration instead.
      JP Simard

    โœจ Enhancements
    ๐Ÿ› Bug Fixes
    • None.
  • v0.33.1 Changes

    July 08, 2019
    ๐Ÿ’ฅ Breaking
    • None.
    • None.
    โœจ Enhancements

    ๐ŸŽ Significantly improve performance when running with a large number of cached
    ๐Ÿ”ง configurations or when running with many cached results.
    ๐Ÿ”ง This was done by splitting each configuration to have its own cache and by
    encoding the cache as a binary property list instead of json.
    Colton Schlosser
    JP Simard

    ๐Ÿ‘• Several public types in SwiftLintFramework have added Codable conformance:
    ๐Ÿ’… Location, RuleDescription, RuleKind, StyleViolation, SwiftVersion,
    JP Simard

    ๐Ÿ–จ Print full relative path to file in log output when it matches the file name
    ๐Ÿ‘• of another path being linted.
    Keith Smiley

    ๐Ÿ› Bug Fixes

    Don't trigger vertical_parameter_alignment violations when using parameters
    with attributes such as @ViewBuilder in function declarations.
    Marcelo Fabri
    ๐Ÿ‘• #2792

    0๏ธโƒฃ Fix false positive in function_default_parameter_at_end rule when using
    0๏ธโƒฃ a closure parameter with default value.
    Marcelo Fabri
    ๐Ÿ‘• #2788

  • v0.33.0 Changes

    ๐Ÿ’ฅ Breaking
    • Remove the weak_computed_property rule. Please see linked issue for discussion and rationale.
      JP Simard #2712
    • None.
    โœจ Enhancements
    • โž• Add " - " delimiter to allow commenting SwiftLint commands without triggering superfluous_disable_command.
      Kevin Randrup

    • โœ… Make testSimulateHomebrewTest() test opt-in because it may fail on unknown condition. Set SWIFTLINT_FRAMEWORK_TEST_ENABLE_SIMULATE_HOMEBREW_TEST environment variable to test like:

      swift test --filter testSimulateHomebrewTest

      Norio Nomura

    • โž• Add option to configure how nested types should be separated in file names by introducting nested_type_separator configuration for the file_name rule.
      Frederick Pietschmann #2717

    • Add unowned_variable_capture opt-in rule to warn against unowned captures in closures when using Swift 5.
      Marcelo Fabri #2097

    • Don't trigger a no_fallthrough_only violation if next case is an @unknown default.
      Marcelo Fabri #2696

    • Add duplicate_enum_cases rule to validate that an enum doesn't contain duplicated cases, as it's impossible to switch on it (see SR-10077 for details).
      Marcelo Fabri #2676

    • โž• Add legacy_multiple opt-in rule to warn against using the remainder operator (%) checking for a remainder of zero when using Swift 5.
      Marcelo Fabri #2612

    ๐Ÿ› Bug Fixes
    • Don't trigger redundant_void_return violations when using subscript as the return type is required.
      Marcelo Fabri

    • Skip module import if cursor info is missing module info.
      alvarhansen #2746

    • Don't trigger file_types_order violations in files only containing extensions.
      Sam Rayner #2749

    • ๐Ÿ‘ฎ Force-unwrapping self should trigger a violation of the force_unwrapping rule.
      Dalton Claybrook #2759

  • v0.32.0 Changes

    ๐Ÿ’ฅ Breaking
    • None.
    • None.
    โœจ Enhancements
    • โž• Add reduce_boolean rule to prefer simpler constructs over reduce(Boolean).
      Xavier Lowmiller #2675

    • Add nsobject_prefer_isequal rule to warn against implementing == on an NSObject subclass as calling isEqual (i.e. when using the class from Objective-C) will not use the defined == method.
      Matthew Healy #2663

    • Add reduce_into opt-in rule to encourage the use of reduce(into:_:) instead of reduce(_:_:) which is less performant.
      Dalton Claybrook #2658

    • โœ‚ Remove @ mark to fix invalid link in
      Hiroki Nagasawa #2669

    • Add new opt-in rule file_types_order to specify how the types in a file should be sorted.
      Cihat Gรผndรผz #2294

    • Add new opt-in rule type_contents_order to specify the order of subtypes, properties, methods & more within a type.
      Cihat Gรผndรผz #2294

    • Add nslocalizedstring_require_bundle rule to ensure calls to NSLocalizedString specify the bundle where the strings file is located.
      Matthew Healy #2595

    • contains_over_first_not_nil rule now also checks for firstIndex(where:).
      Marcelo Fabri #2678

    • Add unused_capture_list rule to ensure that all references in a closure capture list are used.
      Dalton Claybrook #2715

    • ๐Ÿ‘• SwiftLint can now be compiled using Xcode 10.2.
      Marcelo Fabri Norio Nomura #2693

    ๐Ÿ› Bug Fixes
    • ๐Ÿ›  Fix bug where SwiftLint ignores excluded files list in a nested configuration file.
      Dylan Bruschi #2447

    • colon rule now catches violations when declaring generic types with inheritance or protocol conformance.
      Marcelo Fabri #2628

    • discarded_notification_center_observer rule now checks if the observer is added to any collection or passed to a function before triggering the violation.
      jsloop42 #2684

    • ๐Ÿ›  Fix false positives on number_separator when the number is wrapped in parentheses.
      Dalton Claybrook #2683

    • Fix false positives on sorted_first_last when calling firstIndex and lastIndex method. Taiki Komaba #2700

    • ๐Ÿ›  Fix crash when running on Linux with Swift 5 without specifying a --path value or specifying an empty string.
      Keith Smiley #2703

    • Fix false positives on explicit_acl and explicit_top_level_acl rules when declaring extensions that add protocol conformances with Swift 5.
      Marcelo Fabri #2705

    • Let disable all command override superfluous_disable_command rule.
      Frederick Pietschmann #2670

    • Fix issues in explict_acl, redundant_set_access_control and explicit_top_level_acl rules when using Swift 5.
      Marcelo Fabri #2694

  • v0.31.0 Changes

    ๐Ÿ’ฅ Breaking
    • None.
    • None.
    โœจ Enhancements
    • โž• Add deployment_target rule to validate that @availability attributes and #available conditions are not using a version that is satisfied by the deployment target. Since SwiftLint can't read an Xcode project, you need to configure this rule with these keys: iOS_deployment_target, macOS_deployment_target, watchOS_deployment_target and tvOS_deployment_target. By default, these values are configured with the minimum versions supported by Swift.
      Marcelo Fabri #2589

    • Add weak_computed_property rule to warn against using weak in a computed property as it has no effect.
      Marcelo Fabri #2596

    • โž• Add SwiftVersion.five and automatically detect it when computing SwiftVersion.current.
      JP Simard

    • Make redundant_objc_attribute rule autocorrectable.
      Daniel Metzing

    • โž• Add required_deinit opt-in rule to ensure that all classes have a deinit method. The purpose of this is to make memory leak debugging easier so all classes have a place to set a breakpoint to track deallocation.
      Ben Staveley-Taylor #2620

    • nimble_operator now warns about beTrue() and beFalse().
      Igor-Palaguta #2613

    • ๐Ÿ”ง Warn if a configured rule is not enabled.
      Marcelo Fabri #1350

    • Add exclude_ranges option to number_separator for exclusion.
      Cihat Gรผndรผz #2637

    ๐Ÿ› Bug Fixes
  • v0.30.1 Changes

    ๐Ÿ’ฅ Breaking
    • None.
    • Silence CodingKeys violations in unused_private_declaration since these should always be intentional violations.
      Kim de Vos #2573
    โœจ Enhancements
    • โž• Add nslocalizedstring_key opt-in rule to validate that keys used in NSLocalizedString calls are static strings, so genstrings will be able to find them.
      Marcelo Fabri
    ๐Ÿ› Bug Fixes
    • ๐Ÿ›  Fix false positives on trailing_closure rule when using anonymous closure calls.
      Marcelo Fabri #2159

    • ๐Ÿ›  Fix false positives on array_init rule when using prefix operators.
      Marcelo Fabri #1877

    • ๐Ÿ‘• Exclude files defined in the excluded value of SwiftLint's configuration when --use-script-input-files and --force-exclude are specified.
      Luis Valdรฉs #591