| Name | Modified | Size | Downloads / 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_regexconfiguration option to thelarge_tuplerule to silence violations for tuples insideRegex<...>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_closurerule.
SimplyDanny #6451
0.63.1: High-Speed Extraction
Enhancements
- Add a
--disable-sourcekitflag to thelintcommand to disable SourceKit when needed. The environment variableSWIFTLINT_DISABLE_SOURCEKITcan still be used as well.
SimplyDanny #6282
Bug Fixes
-
Retain
asyncinitializers in actors inasync_without_awaitrule.
SimplyDanny #6423 -
Inform users about files being skipped due to impossible file system representation instead of crashing.
SimplyDanny #6419 -
Ignore
overridefunctions inasync_without_awaitrule.
SimplyDanny #6416 -
Avoid infinite recursion for deeply nested symbolic links which is usually the case in
node_modulesdirectories managed bypnpm.
SimplyDanny #6425 -
Fix false positive in
unneeded_escapingrule 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_namewhen used inside a tuple.
tristan-burnside-anz
0.63.0: High-Speed Extraction
Breaking
- The
redundant_self_in_closurerule has been renamed toredundant_self(withredundant_self_in_closureas 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 redundantselfusages, set the newonly_in_closuresoption tofalse.
SimplyDanny
Experimental
- None.
Enhancements
-
Extend
redundant_self_in_closurerule to detect all redundant uses ofself, not just in closures. Initializers (which commonly prefer an explicitselfprefix) can be ignored by settingkeep_in_initializerstotrue.
SimplyDanny -
Add a
separationconfiguration option to thevertical_whitespace_between_casesrule to allow customizing blank line separation between switch cases. The default value isalways(require at least one blank line). Setting it toneverenforces no blank lines between cases.
SimplyDanny #6326 -
Rewrite the following rules with SwiftSyntax:
vertical_whitespace_between_cases
-
Add new opt-in
unneeded_throws_rethrowsrule that triggers when declarations markedthrows/rethrowsnever actually throw or call any throwing code.
Tony Ngo -
Add new
unneeded_escapingrule that detects closure parameters marked with@escapingthat are never stored or captured escapingly.
SimplyDanny -
Add
multiline_call_argumentsopt-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_lengthrule incorrectly ignoring function bodies whenignores_function_declarationsis enabled. The option should only ignore function declarations, not their implementation.
SimplyDanny #6347 -
Fix false positives in
vertical_whitespace_between_casesrule when cases are interleaved with compiler directives like#if/#else/#endif.
SimplyDanny #6332 -
override_in_extensionno longer triggers inside@objc @implementationextensions.
JaredGrubb -
Reinstate handling of access level imports in
sorted_importsrule.
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