github realm/SwiftLint 0.56.0
0.56.0: Heat Pump Dryer

latest releases: 0.57.0, 0.56.2, 0.56.1...
3 months ago

Breaking

  • The deprecated --path and --in-process-sourcekit arguments have now been
    removed completely.
    Martin Redington
    SimplyDanny
    #5614

  • When SwiftLint corrects violations automatically (swiftlint lint --fix)
    it doesn't report the exact location of the fix any longer. The new format
    is <file-path>: Correcting <rule-name> without line and column numbers.
    Reason: Correction positions are likely just incorrect, especially when
    multiple rules apply their rewrites. Fixing that is not trivial and likely
    not worth the effort also considering that there haven't been any bug
    reports about wrong correction positions so far.
    SimplyDanny

Experimental

  • None.

Enhancements

  • Linting got up to 30% faster due to the praisworthy performance
    improvements done in the SwiftSyntax library.

  • Rewrite the following rules with SwiftSyntax:

    • missing_docs

    woxtu
    SimplyDanny

  • Add new prefer_key_path rule that triggers when a trailing closure on a standard
    function call is only hosting a (chained) member access expression since the closure
    can be replaced with a key path argument. Likewise, it triggers on closure arguments.
    SimplyDanny

  • Adds baseline and write_baseline configuration file settings, equivalent
    to the --baseline and --write-baseline command line options.
    Martin Redington
    #5552

  • Add no_empty_block opt-in rule to validate that code blocks are not empty.
    They should at least contain a comment.
    Ueeek
    #5615

  • Add new contrasted_opening_brace rule that enforces opening
    braces to be on a separate line after the preceding declaration.
    SimplyDanny

  • Add new unused_parameter rule that triggers on function/initializer/subscript
    parameters that are not used inside of the function/initializer/subscript.
    SimplyDanny
    #2120

  • Support --target paths being passed to command plugin by Xcode.
    SimplyDanny
    #5603

  • Add modified configurations to examples in rule documentation.
    SimplyDanny

  • Add new option evaluate_effective_access_control_level to missing_docs
    rule. Setting it to true stops the rule from triggering on declarations
    inside of types with lower visibility. These declarations effectively
    have at most the same access level.
    SimplyDanny

  • Add new --check-for-updates command line option for the lint, analyze,
    and version subcommands to check for new versions of SwiftLint, and an
    equivalent check_for_updates configuration file setting.
    Martin Redington
    SimplyDanny
    Ian Leitch
    #5613

  • Add new --only-rule command line option for the lint and analyze,
    subcommands that overrides configuration file rule enablement and
    disablement, in particular to facilitate running --fix for single rules
    without having to temporarily edit the configuration file.
    Martin Redington
    #5666

Bug Fixes

  • Fix a few false positives and negatives by updating the parser to support
    Swift 6 with all its new language constructs.
    SimplyDanny

  • Stop triggering mark rule on "mark" comments in the middle of another
    comment.
    SimplyDanny
    #5592

  • Don't consider specialized imports with attributes as duplicates in
    duplicate_imports rule.
    SimplyDanny
    #5716

  • Use correct types and relative paths in SARIF reporter output. Generally
    avoid escaping slashes in JSON output as well.
    SimplyDanny
    #5598
    #5599

  • Keep initializers with attributed parameters in
    unneeded_synthesized_initializer rule.
    SimplyDanny
    #5153

  • Make vertical_whitespace_between_cases rule work for
    cases ending with a string literal.
    ilendemli
    #5612

  • Ignore access level modifiers restricted to value setting in
    extension_access_modifier rule.
    SimplyDanny
    #5623

  • Fix baseline compare incorrectly reporting some violations
    as new, and also now sorts the violations from baseline compare
    deterministically.
    Martin Redington
    #5606

  • Fix rewriting for implicit_return rule when violations are
    nested within each other.
    Martin Redington
    #5660

  • Fix opening_brace correction and make sure that disable commands
    are taken into account before applying a fix.
    swiftty
    SimplyDanny
    #5598

  • Violations of the typesafe_array_init rule will now be correctly
    reported as such, instead of as violations of the array_init
    rule.
    Martin Redington
    #5709


Using Bazel

With bzlmod:

// Pending BCR update
bazel_dep(name = "swiftlint", version = "0.56.0", repo_name = "SwiftLint")

Without bzlmod, put this in your WORKSPACE:

WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "build_bazel_rules_apple",
    sha256 = "9e26307516c4d5f2ad4aee90ac01eb8cd31f9b8d6ea93619fc64b3cbc81b0944",
    url = "https://github.com/bazelbuild/rules_apple/releases/download/2.2.0/rules_apple.2.2.0.tar.gz",
)

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

http_archive(
    name = "SwiftLint",
    sha256 = "40a7873d54899ace4e485317d172c19507135ae1b3683159d521cc1daa42e196",
    url = "https://github.com/realm/SwiftLint/releases/download/0.56.0/bazel.tar.gz",
)

load("@SwiftLint//bazel:repos.bzl", "swiftlint_repos")

swiftlint_repos()

load("@SwiftLint//bazel:deps.bzl", "swiftlint_deps")

swiftlint_deps()

Then you can run SwiftLint in the current directory with this command:

bazel run @SwiftLint//:swiftlint -- --help

Don't miss a new SwiftLint release

NewReleases is sending notifications on new releases.