github realm/SwiftLint 0.63.0-rc.2
0.63.0-rc.2: High-Speed Extraction

pre-release11 hours ago

Breaking

  • The redundant_self_in_closure rule has been renamed to redundant_self (with
    redundant_self_in_closure as a deprecated alias) to reflect its now broader scope.
    SimplyDanny

Experimental

  • None.

Enhancements

  • Extend redundant_self_in_closure rule to detect all redundant uses of self,
    not just in closures. Initializers (which commonly prefer an explicit self prefix)
    can be ignored by setting keep_in_initializers to true.
    SimplyDanny

  • Add a separation configuration option to the vertical_whitespace_between_cases rule
    to allow customizing blank line separation between switch cases. The default value is
    always (require at least one blank line). Setting it to never enforces no blank
    lines between cases.
    SimplyDanny
    #6326

  • Rewrite the following rules with SwiftSyntax:

    • vertical_whitespace_between_cases

    SimplyDanny

  • Add new opt-in unneeded_throws_rethrows rule that triggers when declarations
    marked throws/rethrows never actually throw or call any throwing code.
    Tony Ngo

  • Add new unneeded_escaping rule that detects closure parameters marked with
    @escaping that are never stored or captured escapingly.
    SimplyDanny

  • Add multiline_call_arguments opt-in rule to enforce consistent multiline
    formatting for function and method call arguments.
    GandaLF2006

  • Improve performance when exclude patterns resolve to a large set of files.
    SimplyDanny
    #5018
    #5207
    #5953
    #6084
    #6259

Bug Fixes

  • Fix line_length rule incorrectly ignoring function bodies when
    ignores_function_declarations is enabled. The option should only ignore
    function declarations, not their implementation.
    SimplyDanny
    #6347

  • Fix false positives in vertical_whitespace_between_cases rule when cases are
    interleaved with compiler directives like #if/#else/#endif.
    SimplyDanny
    #6332

  • override_in_extension no longer triggers inside @objc @implementation extensions.
    JaredGrubb

  • Reinstate handling of access level imports in sorted_imports rule.
    Brett-Best
    #6374


Using Bazel

With bzlmod:

// Pending BCR update
bazel_dep(name = "swiftlint", version = "0.63.0-rc.2", 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 = "b87c861c7ea2d838e3a6725978f39edf94b1fb3ca5f478fa32dd96f360b9d076",
    url = "https://github.com/realm/SwiftLint/releases/download/0.63.0-rc.2/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.