SwiftLint v0.49.0 Release Notes

  • ๐Ÿ‘• Note: The default branch for the SwiftLint git repository will be renamed from โšก๏ธ master to main on September 1st. Please update any code or automation accordingly.

    ๐Ÿ’ฅ Breaking

    • ๐Ÿ‘• SwiftLint now requires Swift 5.6 or higher to build, and macOS 12 or higher to run.
      JP Simard

    • ๐Ÿ–จ Code Climate reports now use SHA256 strings as the issue fingerprint values.
      JP Simard

    • ๐Ÿ‘‰ Make comma_inheritance an opt-in rule.
      Steve Madsen #4027

    • ๐Ÿ—„ The autocorrect command that was deprecated in 0.43.0 has now been completely removed. Use --fix instead.
      JP Simard

    • โœ‚ Remove the AutomaticTestableRule protocol. All examples listed in rules are now tested automatically to make sure they are correct.
      SimplyDanny

    • ๐Ÿ‘• Deprecate the --in-process-sourcekit command line flag. SwiftLint now always uses an in-process SourceKit.
      JP Simard

    Experimental

    • None.

    โœจ Enhancements

    • Make duplicate_imports rule correctable. Fix duplicate_imports rule reporting redundant violations when more than one duplicate is present.
      Timofey Solonin

    • ๐Ÿ‘Œ Support for building SwiftLint with bazel.
      JP Simard

    • ๐Ÿ‘Œ Support for writing custom private native rules when building with bazel.
      JP Simard Keith Smiley #3516

    • ๐Ÿ‘‰ Make comma rule about 10x faster, finding some previously missed cases and fixing some previously wrong corrections.
      JP Simard

    • ๐Ÿ‘‰ Make colon rule about 7x faster, finding some previously missed cases.
      JP Simard

    • ๐Ÿ‘‰ Make closure_spacing rule about 9x faster, finding some previously missed cases and fixing some previously wrong corrections.
      JP Simard SimplyDanny #4090

    • Introduce new configuration option include_compiler_directives (true by default) for the indentation_width rule that allows to ignore compiler directives in the indentation analysis. This is especially useful if one (or a formatter) prefers to have compiler directives always at the very beginning of a line.
      SimplyDanny #4030

    • Enable (recursive) globs in included file paths.
      sarastro-nl

    • Custom rules are now broken down per rule instead of in aggregate in --benchmark.
      JP Simard

    • ๐Ÿ–จ The version command now has an optional --verbose flag that prints out the full version info, notably the build ID, which can be used to determine if two swiftlint executables are identical.
      JP Simard

    • Update documentation for multiline_arguments_brackets and multiline_literal_brackets to make it immediately obvious that common examples will trigger.
      chrisjf #4060

    • ๐Ÿ“œ The --compile-commands argument can now parse SwiftPM yaml files produced when running swift build at .build/{debug,release}.yaml.
      JP Simard

    • Add new configuration option allowed_no_space_operators to operator_usage_whitespace rule. It allows to specify custom operators which shall not be considered by the rule.
      imben123

    • โž• Add new protocols to remove some boilerplate involved in writing SwiftSyntax-based rules.
      JP Simard

    ๐Ÿ› Bug Fixes

    • Fix false positive in self_in_property_initialization rule when using closures inside didSet and other accessors.
      Marcelo Fabri #4041

    • ๐Ÿ›  Fix false positive in Duplicated Key in Dictionary Literal Violation rule when using keys that are generated at runtime with the same source code.
      OrEliyahu #4012

    • ๐Ÿ›  Fix false positive in yoda_condition rule by basing it on SwiftSyntax.
      SimplyDanny #4081

    • ๐Ÿ›  Fix false negatives in first_where rule when filtering array of dictionaries with String keys.
      KS1019

    • ๐Ÿ›  Fix broken correction for explicit_init rule.
      KS1019