github realm/SwiftLint 0.63.2
0.63.2: High-Speed Extraction

5 hours ago

0.63.2: High-Speed Extraction

Enhancements

  • Add ignore_regex configuration option to the large_tuple rule to silence
    violations for tuples inside Regex<...> types, which commonly have large
    tuple type parameters for capture groups.
    Deco354
    #6340

Bug Fixes

  • Use start position of closure (in addition to the containing function call) to check
    if violations are disabled for it in trailing_closure rule.
    SimplyDanny
    #6451

0.63.1: High-Speed Extraction

Enhancements

  • Add a --disable-sourcekit flag to the lint command to disable SourceKit when needed.
    The environment variable SWIFTLINT_DISABLE_SOURCEKIT can still be used as well.
    SimplyDanny
    #6282

Bug Fixes

  • Retain async initializers in actors in async_without_await rule.
    SimplyDanny
    #6423

  • Inform users about files being skipped due to impossible file system representation
    instead of crashing.
    SimplyDanny
    #6419

  • Ignore override functions in async_without_await rule.
    SimplyDanny
    #6416

  • Avoid infinite recursion for deeply nested symbolic links which is usually the case
    in node_modules directories managed by pnpm.
    SimplyDanny
    #6425

  • Fix false positive in unneeded_escaping rule when an escaping closure is used in
    a nested closure preceded by another closure.
    SimplyDanny
    #6410

  • Fix non-excluded bool literal in optional_enum_case_name when used inside a tuple.
    tristan-burnside-anz

0.63.0: High-Speed Extraction

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,
    while it still maintains the previous behavior of only checking closures by default.
    To enable checking for all redundant self usages, set the new only_in_closures
    option to false.
    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.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 = "e3da0cfecc1ae663338b0c54cc45869834cd436b539e0d30816dd44b0e369d28",
    url = "https://github.com/realm/SwiftLint/releases/download/0.63.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.