0.0.28: PSS Custom
Breaking
-
The deprecated
--pathargument 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
baselineandwrite_baselineconfiguration file settings, equivalent
to the--baselineand--write-baselinecommand line options.
Martin Redington
#5552 -
Add
no_empty_blockdefault 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_leveltomissing_docs
rule. Setting it totruestops 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
markrule on "mark" comments in the middle of another
comment.
SimplyDanny
#5592 -
Keep initializers with attributed parameters in
unneeded_synthesized_initializerrule.
SimplyDanny
#5153 -
Make
vertical_whitespace_between_casesrule work for
cases ending with a string literal.
ilendemli
#5612 -
Ignore access level modifiers restricted to value setting in
extension_access_modifierrule.
SimplyDanny
#5623 -
Fix
baseline compareincorrectly 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