Skip to content
This repository has been archived by the owner on Nov 30, 2024. It is now read-only.

0.0.28: PSS Custom

Compare
Choose a tag to compare
@camposbrunocampos camposbrunocampos released this 04 Sep 14:42
· 103 commits to main since this release

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

    woxtu
    SimplyDanny

  • Adds baseline and write_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 to missing_docs
    rule. Setting it to true 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 from baseline 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