0.0.28: PSS Custom
Breaking
-
The deprecated
--path
argument has now been removed completely.
Martin Redington
#5614 -
When SwiftLint corrects violations automatically (
swiftlint lint --fix
)
it doesn't report the exact location of the fix any longer. The new format
is<file-path>: Correcting <rule-name>
without line and column numbers.
Reason: Correction positions are likely just incorrect, especially when
multiple rules apply their rewrites. Fixing that is not trivial and likely
not worth the effort also considering that there haven't been any bug
reports about wrong correction positions so far.
SimplyDanny
Experimental
- None.
Enhancements
-
Linting got around 20% faster due to the praisworthy performance
improvements done in the SwiftSyntax
library. -
Rewrite the following rules with SwiftSyntax:
missing_docs
-
Adds
baseline
andwrite_baseline
configuration file settings, equivalent
to the--baseline
and--write-baseline
command line options.
Martin Redington
#5552 -
Add
no_empty_block
default rule to validate that code blocks are not empty.
They should at least contain a comment.
Ueeek
#5615 -
Add new option
evaluate_effective_access_control_level
tomissing_docs
rule. Setting it totrue
stops the rule from triggering on declarations
inside of types with lower visibility. These declarations effectively
have at most the same access level.
SimplyDanny
Bug Fixes
-
Fix a few false positives and negatives by updating the parser to support
Swift 6 with all its new language constructs.
SimplyDanny -
Stop triggering
mark
rule on "mark" comments in the middle of another
comment.
SimplyDanny
#5592 -
Keep initializers with attributed parameters in
unneeded_synthesized_initializer
rule.
SimplyDanny
#5153 -
Make
vertical_whitespace_between_cases
rule work for
cases ending with a string literal.
ilendemli
#5612 -
Ignore access level modifiers restricted to value setting in
extension_access_modifier
rule.
SimplyDanny
#5623 -
Fix
baseline compare
incorrectly reporting some violations
as new, and also now sorts the violations frombaseline compare
deterministically.
Martin Redington
#5606
Using Bazel
With bzlmod:
// Pending BCR update
bazel_dep(name = "swiftlint", version = "0.0.28", 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 = "3c8a92394c7660b5a94b82d4484134441feede4fa5bbea28296928265eab7177",
url = "https://github.com/realm/SwiftLint/releases/download/0.0.28/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