Update dependency realm/SwiftLint to v0.62.1 #47
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.57.0->0.62.1Release Notes
realm/SwiftLint (realm/SwiftLint)
v0.62.1Compare Source
Breaking
Experimental
Enhancements
Bug Fixes
SimplyDanny
v0.62.0Compare Source
Breaking
The structure of
SwiftLintBinary.artifactbundle.zipis now simpler. Internal paths nolonger contain version numbers, especially. So in an Xcode Run Script build phase,
you can refer to the
swiftlintbinary like this:All other consumers of the artifact bundle do not need to change anything. Swift Package
Manager resolves the new paths automatically.
SimplyDanny
SwiftLint now requires a Swift 6 or higher compiler to build. The
Swift Package Manager plugins continue
to work with all versions down to Swift 5.9.
SimplyDanny
sorted_importsrule's behavior changed in that it now treats imports directly adjacentto each other as a group that is sorted together. Imports separated by at least one
non-import statement or empty line(s) are treated as separate groups. Comments are
considered part of the import group they are attached to and do not break it.
SimplyDanny
Experimental
Enhancements
Rewrite the following rules with SwiftSyntax:
modifier_ordersorted_importsSimplyDanny
Add new
prefer_asset_symbolsrule that suggests using asset symbols overstring-based image initialization to avoid typos and enable compile-time
checking. This rule detects
UIImage(named:)andSwiftUI.Image(_:)callswith string literals and suggests using asset symbols instead.
danglingP0inter
#5939
Exclude integer generic parameters from
generic_type_namerule.Include integer generic parameters in the
identifier_namerule for validation.nandhinisubbu
#6213
Bug Fixes
Ignore function, initializer and subscript declarations alike when the
ignores_function_declarationsoption is enabled in theline_lengthrule.SimplyDanny
#6241
Individual
custom_rulescan now be specified in theonly_ruleconfigurationsetting and the
--only-rulecommand line option without having to specifycustom_rulesas well. Additionally, violations of custom rules are now reportedin a deterministic order, sorted by the rule's identifier.
Martin Redington
#6029
#6058
Ignore
redundant_discardable_letrule violations in nested SwiftUI scopes as wellwhen
ignore_swiftui_view_bodiesis enabled.SimplyDanny
#3855
#6255
Exclude function types from
async_without_awaitrule analysis. Higher-order functionobjects can be
asyncwithout containing anawaitwhen assigning to them.SimplyDanny
#6253
Exclude
@concurrentfunctions fromasync_without_awaitrule analysis.@concurrentfunctions requiresaysncin any case.nandhinisubbu
#6283
swiftlint-static, the experimental fully-static Linux binary, now uses 512 KiBas thread stack size matching Darwin’s size to prevent stack exhaustion.
ainame
#6287
v0.61.0Compare Source
Breaking
If
SWIFTLINT_DISABLE_SOURCEKITis set to prohibit loadinglibsourcekitdInProcat runtime,rules requiring SourceKit will be disabled and a warning will be printed once per rule.
SimplyDanny
The
operator_whitespacerule has been removed and its functionality merged into thefunction_name_whitespacerule. The latter now also checks spacing around thefunckeyword, the function name/operator and its generic parameters while respecting comments.
On top of that, it supports autocorrection.
SimplyDanny
Expose only
TestHelpersandExtraRulesTestsas part of Bazel releases.SimplyDanny
Experimental
- A dynamically linked binary that requires
- A fully statically linked binary named
SimplyDannylibsourcekitdInProc.sotogether with itstransitive dependencies to be present on the system at runtime. It is named
swiftlintand the same binary as before. It supports all built-in rules.
swiftlint-staticthat does not requireany dynamic libraries at runtime. Rules requiring SourceKit will be disabled and
reported to the console when running this binary.
Enhancements
A fully statically linked Linux binary can now be built with the Swift SDK and
the compiler options
-Xswiftc -DSWIFTLINT_DISABLE_SOURCEKIT. This binary does notrequire
libsourcekitdInProc.soor any other dynamic libraries to be present on thesystem at runtime. Rules requiring SourceKit will be disabled and reported to the console
when running this binary.
SimplyDanny
Add
function_name_whitespacerule to enforce consistent spacing between thefunckeyword, function name, and its generic parameters. Ensures exactly one space between
funcand the function name, and configurable spacing around generics viageneric_spacing:no_space(default):func name<T>()leading_space:func name <T>()trailing_space:func name<T> ()leading_trailing_space:func name <T> ()Supports autocorrection.
GandaLF2006
The
operator_whitespacerule now supports autocorrection and better respects comments infunction declarations. The rule has been deprecated in favor of the new
function_name_whitespacerule. You can still refer to it by its identifier, but get checking for normal function names
on top.
SimplyDanny
In
line_lengthrule, treat strings with opening and closing quotes in the same line assingle-line strings no matter if they are enclosed by triple quotes or not. Furthermore,
improve detection of comment-only lines.
SimplyDanny
#6220
#6219
Improve detection of comment-only lines in
file_lengthrule.SimplyDanny
#6219
Rewrite
quick_discouraged_callrule with SwiftSyntax.SimplyDanny
Bug Fixes
Ensure that header matched against always end in a newline in
file_headerrule.SimplyDanny
#6227
Fix
closure_end_indentationrule reporting violations when the called baseinvolves chained optional expressions.
SimplyDanny
#6216
v0.60.0Compare Source
Breaking
Remove support for boolean values in the
validates_start_with_lowercaseoption entirely.Use the severity levels
off,warningorerrorinstead.kaseken
SwiftLint now requires macOS 13 or higher to run.
JP Simard
In
SwiftLintBuildToolPlugin, print the content of theBUILD_WORKSPACE_DIRECTORYenvironment variable only in debug builds.
SimplyDanny
#6135
The
redundant_optional_initializationrule has been replaced by theimplicit_optional_initializationrule that enforces implicit or explicit initializationof optional variables. Its default style
alwaysmimics the behavior of theredundant_optional_initializationrule by default.redundant_optional_initializationis now an alias for
implicit_optional_initialization.leo-lem
#1940
The
swiftlint_linux.ziprelease archive has been renamed toswiftlint_linux_amd64.zipto avoid confusion with the new
swiftlint_linux_arm64.ziparchive.Bradley Mackey
SimplyDanny
Experimental
Enhancements
Linting got up to 30% faster due to the praiseworthy performance
improvements done in the SwiftSyntax
library.
Ignore locally defined
countidentifiers inempty_countrule.SimplyDanny
#5326
The
private_swiftui_staterule now applies toViewModifiertypes.mt00chikin
Support for ARM64 Linux binaries has been added. The
swiftlint_linux.ziprelease archivehas been renamed to
swiftlint_linux_amd64.zip. Next to it, a newswiftlint_linux_arm64.ziparchive has been added. The
SwiftLintBinary.artifactbundle.zipnow contains both versionsof the Linux binary, so that the binary plugins
can now be used on Linux and macOS running no both AMD64 and ARM64 architectures.
Bradley Mackey
SimplyDanny
Add
include_variablesconfiguration option tonon_optional_string_data_conversionrule.When enabled, the rule will trigger on variables, properties, and function calls in addition
to string literals. Defaults to
falsefor backward compatibility.SimplyDanny
#6094
Add Sendable conformance to Rule.Type for building with Swift 6.
erikkerber
#issue_number
Fix false positives for
Actor-conforming delegate protocols in theclass_delegate_protocolrule.imsonalbajaj
#6054
Support extensions and protocols in
type_body_lengthrule. They can be configured using thenew
excluded_typesoption which by default excludesextensionandprotocoltypes.This means the rule now checks
struct,class,actorandenumby default. To enablechecking of extensions and protocols, set
excluded_typesto an empty array or exclude othertypes as needed.
SimplyDanny
Exclude explicit system modules from
duplicate_importsanalysis, that is, modulesthat are part of the system frameworks but need to be imported explicitly due to being
declared as
explicit modulein their module map.SimplyDanny
#6098
Ignore various assignment operators like
=,+=,&=, etc. with right-hand sideternary expressions otherwise violating the
void_function_in_ternaryrule.SimplyDanny
#5611
Rewrite the following rules with SwiftSyntax:
accessibility_label_for_imageaccessibility_trait_for_buttonclosure_end_indentationexpiring_todofile_headerfile_lengthline_lengthtrailing_whitespacevertical_whitespaceJP Simard
Matt Pennig
Add
excluded_pathsoption to thefile_namerule. It allows to exclude complete filepaths from analysis. All entries are treated as regular expressions. A single match in
its full path is enough to ignore a file. This is different from the
excludedoptionthat only accepts and checks against file names.
Ueeek
#6066
Fix false positives of
redundant_discardable_letrule in@ViewBuilderfunctions,#Previewmacro bodies and preview providers whenignore_swiftui_view_bodiesisenabled.
kaseken
#6063
Improve
multiline_parametersrule to correctly supportmax_number_of_single_line_parametersand detect mixed formatting.GandaLF2006
Add new
prefer_condition_listrule that triggers when aguard/if/whilecondition is composed of multiple expressions connected by the
&&operator.It suggests to use a condition list instead, which is more idiomatic.
SimplyDanny
Add
ignore_coding_keysparameter tonestingrule. Setting this to true preventsCodingKeyenums from violating the rule.braker1nine
#5641
Support deinitializers and subscripts in
function_body_lengthrule.SimplyDanny
Extend the
xct_specific_matcherrule to support identity operators (===and!==)in addition to the existing equality operators (
==and!=).SimplyDanny
#5849
Add new
implicit_optional_initializationrule to enforce implicit or explicitinitialization of optional variables, configurable via
style: always | never.It replaces the
redundant_optional_initializationrule mimicking it with thestyle: alwaysoption which is the default.leo-lem
#1940
Add new
ignore_identity_closuresparameter toprefer_key_pathsrule to skipconversion of identity closures (
{ $0 }) to identity key paths (\.self).Note that identity key paths are only supported from Swift 6 on, hence this option
will be implicitly ignored/set to
truewhen SwiftLint detects a Swift <6 compilerto avoid causing compilation errors.
p4checo
#5965
Bug Fixes
Fix
no_extension_access_modifierrule incorrectly triggering fornonisolated extension.The rule now only flags actual access control modifiers (
private,public,open,internal,fileprivate) and ignores isolation modifiers likenonisolated.copilot
#6168
Improved error reporting when SwiftLint exits, because of an invalid configuration file
or other error.
Martin Redington
#6052
Keep the default severity levels when neither
warningnorerrorvalues are configured.Ensure especially that the
errorlevel is not set tonilwhen thewarninglevelisn't set either.
SimplyDanny
v0.59.1Compare Source
Breaking
opaque_over_existentialopt-in rule as it causes too many false positivesthat can even lead to wrong-compilable code when
anyis required by a protocol thetype conforms to. In this case, using
somecan be totally valid even though theprotocol requirement is not reimplemented for the type causing behavioral changes.
SimplyDanny
Experimental
Enhancements
allowed_numbersoption to theno_magic_numbersrule.Martin Redington
Bug Fixes
v0.59.0Compare Source
Breaking
SimplyDanny
Experimental
swiftlint-devcommand line tool that's intended to help to develop SwiftLint by encapsulating repetitivetasks. It can already be used to generate templates for new rules including optional configurations and tests. Run
swift run swiftlint-dev rules template -hto get an overview of the command's usage and the available customizationoptions. To register new rules, run
swift run swiftlint-dev rules register.SimplyDanny
Enhancements
Add new option
ignores_multiline_stringstoline_lengthrule. It allows to ignore too longlines inside of multiline strings.
thisIsTheFoxe
#2689
Ignore
UIColorinitializers inno_magic_numbersrule.suojae
hyeffie
#5183
Exclude types with a
@Suiteattribute and functions annotated with@Testfromno_magic_numbersrule.Also treat a type as a
@Suiteif it contains@Testfunctions.SimplyDanny
#5964
Add new
opaque_over_existentialopt-in rule that triggers when the existentialanytype of afunction parameter can be replaced with an opaque
sometype.SimplyDanny
Add a new rationale property to rule descriptions, providing a more expansive
description of the motivation behind each rule.
Martin Redington
#5681
Add new
allowed_typesoption tolegacy_objc_typerule to ignore certain types.kapitoshka438
#3723
Add
excluded_methodsconfiguration option tounneeded_overrideto opt out checking methods with a given name.For example, this helps avoid a conflict with
balanced_xctest_lifecyclewhere one ofsetUp/tearDownis empty but the other is not.
jaredgrubb
Bug Fixes
Fix issue referencing the Tests package from another Bazel workspace.
jszumski
Fix crash when a disable command is preceded by a unicode character.
SimplyDanny
#5945
Allow severity of
duplicate_importsrule to be configurable.SimplyDanny
#5978
Silence
no_magic_numbersrule in conditions of#ifdirectives.SimplyDanny
#6000
Consider types restricting a protocol to classes in composed inherited types in
class_delegate_protocolrule.SimplyDanny
#5982
Rewrite
type_contents_orderrule with SwiftSyntax fixing an issue with experimental availability macros.SimplyDanny
#5999
Update
file_namerule to considermacrotypes.fraioli
#6026
v0.58.2Compare Source
Breaking
Experimental
Enhancements
Bug Fixes
SimplyDanny
#5966
v0.58.1Compare Source
Breaking
If you are referring to the
swiftlintbinary from an Artifact Bundle consumed via Swift Package Managerin an Xcode Run Script Build Phase, make sure to update the path from
to
in order to make Xcode use the binary built for macOS.
SimplyDanny
#5954
Revert changes to improve performance when exclude patterns resolve to a large set of files. While resolving files
indeed got much faster in certain setups, it leads to missed exclusions for nested configurations and when the linted
folder is not the current folder.
SimplyDanny
#5953
Experimental
Enhancements
Bug Fixes
Fix
redundant_sendablecorrection by removing a remaining trailing comma as well whenSendablewas last.SimplyDanny
#5952
Remove lints for
redundant_sendableon protocols, whereSendableis not redundant.riley-williams
#5958
Add
ib_segue_actionto default configuration oftype_contents_orderrule on the same level asib_actiontodefine and document a standard position.
SimplyDanny
#5524
v0.58.0Compare Source
Breaking
The command plugin now requires write permissions so that it works with the
--fixoption without an error.SimplyDanny
The artifact bundle name has changed.
SwiftLintBinary-macos.artifactbundle.zipis now calledSwiftLintBinary.artifactbundle.zip. It now includes an AMD64 Linux binary.Bradley Mackey
#5514
The
inert_deferandunused_capture_listrules have completely been removed after being deprecated for 2 years.SimplyDanny
SwiftLint now requires a Swift 5.10 or higher compiler to build.
The Swift Package Manager plugins continue to work with
Swift 5.9.
SimplyDanny
The
private_unit_testrule's deprecatedregexconfiguration option has been removed after 2 years.Martin Redington
#5912
Experimental
Enhancements
Add Xcode command plugin allowing to run SwiftLint from within Xcode.
SimplyDanny
Add new
async_without_awaitopt-in rule that checks if anasyncdeclaration contains at least oneawait.Jan Kolarik
#5082
Support replacing identity expressions with
\.selfinprefer_key_pathrule from Swift 6 on.SimplyDanny
Support linting only provided file paths with command plugins.
DanSkeel
Add new category for
@IBSegueActiontotype_contents_orderrule.dk-talks
SimplyDanny
Add option to disable
redundant_discardable_letrule in SwiftUI view bodies.SimplyDanny
#3855
Add new
redundant_sendablerule that triggers onSendableconformances oftypes that are implicitly already
Sendabledue to being actor-isolated. Itis enabled by default.
SimplyDanny
Improve performance when exclude patterns resolve to a large set of files.
SimplyDanny
#5018
Bug Fixes
Ignore TipKit's
#Rulemacro inempty_countrule.Ueeek
#5883
Ignore super calls with trailing closures in
unneeded_overriderule.SimplyDanny
#5886
If violations are detected by
lintoranalyze, still perform an updatecheck for new versions of SwiftLint if requested.
Martin Redington
#5904
v0.57.1Compare Source
Breaking
Experimental
Enhancements
Suggest failable
String(bytes:encoding:)initializer inoptional_data_string_conversionrule as it accepts allSequencetypes.
Jordan Rose
SimplyDanny
Support reading files to lint from Input File Lists provided
by Run Script Build Phases in Xcode using the command-line
argument
--use-script-input-file-lists.BlueVirusX
Adds a
lenientconfiguration file setting, equivalent to the--lenientcommand line option.
Martin Redington
#5801
Support type casting on configuration option values defined by environment variables.
Without a cast, these values would always be treated as strings leading to a potentially
invalid configuration.
SimplyDanny
#5774
Add new option
max_number_of_single_line_parametersthat allows only the specified maximumnumber of parameters to be on one line when
allows_single_line = true. If the limit isexceeded, the rule will still trigger. Confusing option combinations like
allows_single_line = falsetogether with
max_number_of_single_line_parameters > 1will be reported.kimdv
SimplyDanny
#5781
The
redundant_type_annotationrule gains a new option,ignore_properties, that skips enforcement on members in atype declaration (like a
struct). This helps the rule coexist withthe
explicit_type_interfacerule that requires such redundancy.jaredgrubb
#3750
Allow inherited isolation parameter to be first in function signatures
depending on the new option
ignore_first_isolation_inheritance_parameterwhich is
trueby default.SimplyDanny
#5793
Bug Fixes
Run command plugin in whole package if no targets are defined in the
package manifest.
SimplyDanny
#5787
Silence
superfluous_elserule onifexpressions with only a singleavailability condition.
SimplyDanny
#5833
Stop triggering the
control_statementrule on closures being directlycalled as conditions.
SimplyDanny
#5846
Do not trigger
self_in_property_initializationrule onselfinkey paths expressions.
SimplyDanny
#5835
Allow to specify transitive modules to be taken into account by
unused_importrule. This avoids that required imports are removed.Paul Taykalo
SimplyDanny
#5167
Only pass cache path and directory paths to commands that accept these arguments
in the command plugin.
SimplyDanny
#5848
Do not throw deprecation warning if deprecated property is not
presented in configuration.
chipp
#5791
The
prefer_type_checkingrule will no longer trigger for non-optionaltype casting (
as), or for comparisons to optional types.Martin Redington
#5802
Fixes an issue where the
superfluous_disable_commandrule could generatefalse positives for nested disable commands for custom rules.
Martin Redington
#5788
Fixes the
--only-rulecommand line option, when a default.swiftlint.ymlis absent. Additionally rules specified with
--only-ruleon the commandline can now be disabled in a child configuration, to allow specific
directories to be excluded from the rule (or from being auto-corrected by
the rule), and
--only-rulecan now be specified multiple timesto run multiple rules.
Martin Redington
#5711
Fixes
file_namerule to match fully-qualified names of nested types.Additionally adds a
require_fully_qualified_namesboolean option to enforcethat file names match nested types only using their fully-qualified name.
fraioli
#5840
Fixes an issue where the
vertical_whitespace_between_casesrule does notrecognize
@unknown default.Jared Grubb
#5788
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.