Download Latest Version swiftlint_linux_amd64.zip (64.8 MB)
Email in envelope

Get an email when there's a new version of SwiftLint

Home / 0.63.2
Name Modified Size InfoDownloads / Week
Parent folder
bazel.tar.gz 2026-01-26 444.2 kB
bazel.tar.gz.sha256 2026-01-26 116 Bytes
portable_swiftlint.zip 2026-01-26 10.7 MB
SwiftLint.pkg 2026-01-26 10.7 MB
swiftlint_linux_amd64.zip 2026-01-26 64.8 MB
swiftlint_linux_arm64.zip 2026-01-26 62.2 MB
SwiftLintBinary.artifactbundle.zip 2026-01-26 72.6 MB
0.63.2_ High-Speed Extraction source code.tar.gz 2026-01-26 942.9 kB
0.63.2_ High-Speed Extraction source code.zip 2026-01-26 1.4 MB
README.md 2026-01-26 7.3 kB
Totals: 10 Items   223.9 MB 0

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 :::python 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:

:::console
bazel run @SwiftLint//:swiftlint -- --help
Source: README.md, updated 2026-01-26