Breaking
- The
redundant_self_in_closurerule has been renamed toredundant_self(with
redundant_self_in_closureas a deprecated alias) to reflect its now broader scope.
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 is
always(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 when
ignores_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.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