Danny Mösch
7b4335abea
Fix correction of sorted_imports rule for leading comments case ( #6318 )
2025-10-26 08:26:49 +01:00
Nandhini Subramani
6619ca9c10
Add isolation parameter to modifier_order rule ( #6316 )
2025-10-22 09:40:45 +02:00
Danny Mösch
70a2e6ceac
Add new incompatible_concurrency_annotation rule ( #6290 )
2025-10-20 15:11:10 -04:00
Nandhini Subramani
2c2ca671ed
Add ignores_literals option to trailing_whitespace rule ( #6309 )
2025-10-18 04:31:52 -04:00
Nandhini Subramani
a17dc04012
Add option to ignore regex literals in line_length rule ( #6307 )
2025-10-16 20:10:32 +02:00
Tatsuyuki Kobayashi
6dfad2cf1c
Fix false positive with #Preview macro in closure_end_indentation ( #6306 )
2025-10-16 05:28:02 -04:00
Danny Mösch
25ef2ea69b
Remove trailing comma ( #6297 )
2025-10-13 22:56:24 +02:00
Nandhini Subramani
a23e4c98bc
Exclude integer generic parameters from generic_type_name and handle them in identifier_name ( #6289 )
2025-10-10 23:07:41 +02:00
Kirti Verma and Danny Mösch
9a61f48c7a
Add prefer_asset_symbols rule ( #6261 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-10-10 15:28:16 -04:00
Nandhini Subramani
a0414c919d
Ignore @concurrent functions in async_without_await rule ( #6284 )
2025-10-08 19:06:56 +02:00
Danny Mösch
4065fc8437
Enable upcoming feature MemberImportVisibility ( #6286 )
2025-10-08 08:12:05 +02:00
Danny Mösch
a6247c24e4
Rewrite sorted_imports rule with SwiftSyntax ( #6280 )
2025-10-05 17:00:27 +02:00
Danny Mösch
e9718145cb
Rewrite modifier_order rule with SwiftSyntax ( #6279 )
2025-10-04 16:39:17 +02:00
Danny Mösch
530bf9d0c5
Let legacy function rules adhere to @SwiftSyntaxRule ( #6271 )
2025-10-03 08:03:59 -04:00
Danny Mösch
7348cf0f4a
Use SwiftSyntax 6.3 pre-release 2025-09-15 ( #6206 )
2025-09-29 14:59:47 +02:00
Danny Mösch
aa67f5ac13
Adopt typed throws where possible ( #5922 )
2025-09-27 19:11:46 +02:00
Danny Mösch
0e2198d086
Exclude function types from async_without_await rule analysis ( #6258 )
2025-09-27 19:10:30 +02:00
Danny Mösch
74e6c3625f
Ignore redundant_discardable_let in nested SwiftUI scopes ( #6257 )
2025-09-25 11:35:28 -04:00
Danny Mösch
dcbdcc92d1
Ignore function, initializer and subscript declarations alike ( #6242 )
2025-09-07 11:53:32 +02:00
Danny Mösch
5e6e59f212
Rewrite quick_discouraged_call rule with SwiftSyntax ( #6237 )
2025-09-06 14:10:38 +02:00
Danny Mösch
4859fa8e82
Ensure that headers matched against always end in a newline ( #6234 )
2025-09-04 23:09:35 +02:00
Danny Mösch
b58b8401a0
Improve detection of comment-only lines in file_length rule ( #6231 )
2025-09-04 10:27:26 +02:00
Danny Mösch
b97f63a89d
Properly detect comment-only lines ( #6230 )
2025-09-03 23:42:04 +02:00
Danny Mösch
233908e28c
Treat strings with opening and closing quotes in the same line as single-line strings ( #6229 )
2025-09-03 22:29:33 +02:00
Danny Mösch
6946309f9b
Consider other expression types before function calls ( #6226 )
2025-09-03 14:33:10 +02:00
Danny Mösch
57d6752a2a
Merge function_name_whitespace and operator_whitespace rules ( #6217 )
2025-09-03 00:34:22 +02:00
Rodion Ivashkov and Danny Mösch
91b26549c4
Add function_name_whitespace rule to validate and autocorrect spacing around function names ( #6156 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-08-30 10:40:44 -04:00
Danny Mösch
77050e8c40
Enable a fully statically linked Linux executable ( #6211 )
...
If SwiftLint is built from this state using the Swift SDK, we'll get a
large self-contained Linux executable that runs without loading SourceKit.
It can do that by disabling any rule that requires SourceKit.
With `SWIFTLINT_DISABLE_SOURCEKIT` set on a normally (dynamically linked)
binary, the behavior is the same. That's different from the previously
reported more serious warnings.
2025-08-30 10:02:38 -04:00
Danny Mösch
8ada387884
Ignore locally defined count identifiers in empty_count rule ( #6202 )
2025-08-24 14:08:40 -04:00
Danny Mösch
61507218f7
Exclude explicit system modules from duplicate_imports analysis ( #6203 )
2025-08-24 09:40:44 +02:00
Matt Thompson
2cfb4c2068
Apply private_swiftui_state rule to ViewModifier types ( #6200 )
2025-08-23 12:05:49 +02:00
André Pacheco Neves and Danny Mösch
fe099492f2
Allow prefer_key_paths to ignore identity closures ({ $0 }) ( #6068 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-08-15 00:30:10 +03:00
Leopold Lemmermann and Danny Mösch
2677d5ee6e
Add new implicit_optional_initialization replacing redundant_optional_initialization ( #6165 )
...
The new rule covers both cases, initialization with `= nil` and without, consistently.
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-08-13 10:08:49 +00:00
Copilot and Danny Mösch
90820fcda3
Extend xct_specific_matcher rule to cover === and !== ( #6184 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-08-09 09:03:13 -04:00
Copilot and Danny Mösch
8cda6c66e9
Fix no_extension_access_modifier rule triggering on nonisolated modifier ( #6174 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-08-04 13:12:37 -04:00
Copilot and Danny Mösch
8bb69b064a
Add include_variables option to non_optional_string_data_conversion rule ( #6172 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-08-02 17:49:58 -04:00
Danny Mösch
c1ffdfe891
Enable prefer_condition_list rule ( #6163 )
2025-07-12 09:41:00 -04:00
Danny Mösch
cb214d51fa
Add new prefer_condition_list rule ( #6157 )
2025-07-12 07:52:50 -04:00
Danny Mösch
a321566c05
Support protocols and extensions in type body length checking ( #6143 )
2025-07-11 22:27:47 +02:00
Danny Mösch
4efdcc7b25
Base visitors on rule configuration ( #6159 )
2025-07-10 18:13:06 -04:00
Danny Mösch
df96466163
Support deinitializers and subscripts in function body length checking ( #6142 )
2025-07-09 16:33:49 -04:00
Danny Mösch
6af2aed49d
Ensure that closure_end_indentation doesn't drop comments ( #6158 )
2025-07-09 15:54:59 -04:00
Chris Brakebill and Danny Mösch
c97cf24797
Add ignore_codingkeys parameter in nesting rule ( #5650 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-07-09 15:09:38 -04:00
Danny Mösch
599e51a5a2
Format code ( #6151 )
2025-07-02 17:50:53 -04:00
Rodion Ivashkov
097bef27ef
Fix configuration handling in multiline_parameters for stricter validation ( #6148 )
2025-07-02 17:04:45 -04:00
Danny Mösch
de613ba8b7
Prepare rule for SwiftSyntax 6.2 ( #6144 )
2025-06-29 12:40:11 -04:00
Danny Mösch
546f71bb2d
Add additional newline to first token in file ( #6141 )
...
For all first tokens in a line the newline character causing the new
line is part of the leading trivia. The only exception is the very first
token in a file because at the beginning of a file, there is no previous
line that needs to be broken.
2025-06-27 10:28:24 +02:00
Koichiro Ueki and Danny Mösch
e65767baf8
Add new excluded_paths option to file_name rule ( #6092 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-06-25 21:30:32 +02:00
JP Simard
f7f3caa50e
Migrate TrailingWhitespaceRule from SourceKit to SwiftSyntax ( #6117 )
...
## Summary
Convert TrailingWhitespaceRule to use SwiftSyntax instead of SourceKit
for improved performance and better handling of trailing whitespace
detection, especially within block comments.
## Key Technical Improvements
- **Enhanced block comment detection** distinguishing between lines fully
covered by block comments vs lines containing block comments with code
- **Accurate whitespace detection** using CharacterSet.whitespaces for
all Unicode whitespace characters, not just space and tab
- **Improved comment handling** with proper detection of line-ending
comments and multi-line block comment structures
- **Better correction mechanism** using ViolationCorrection ranges
instead of manual string reconstruction
- **Line-based analysis** maintaining efficiency while providing precise
violation positions
## Migration Details
- Replaced `CorrectableRule` with `@SwiftSyntaxRule(correctable: true)`
- Implemented `ViolationsSyntaxVisitor` pattern for line-based validation
- Added `collectLinesFullyCoveredByBlockComments` to properly handle
test framework comment wrapping scenarios
- Distinguished between three comment scenarios: lines fully within block
comments, full-line comments, and lines ending with comments
- Maintained all configuration options (ignores_empty_lines, ignores_comments)
- Preserved exact violation position reporting with UTF-8 offset calculations
2025-06-24 21:12:32 -04:00
JP Simard
ab7d117030
Migrate FileHeaderRule from SourceKit to SwiftSyntax ( #6112 )
...
## Summary
Convert FileHeaderRule to use SwiftSyntax instead of SourceKit for
improved performance and better handling of file header comments,
shebangs, and doc comments.
## Key Technical Improvements
- **Enhanced shebang support** properly skipping past `#!/usr/bin/env swift` lines
- **Better comment type discrimination** excluding doc comments from header analysis
- **Accurate position calculation** converting between UTF-8 and UTF-16 offsets for regex matching
- **Improved trivia traversal** for comprehensive header comment collection
- **SwiftLint command filtering** to exclude directive comments from header content
## Migration Details
- Replaced `OptInRule` with `@SwiftSyntaxRule(optIn: true)` annotation
- Implemented `ViolationsSyntaxVisitor` pattern for file-level analysis
- Added logic to start header collection after shebang.endPosition if present
- Distinguished between regular comments and doc comments (///, /** */)
- Maintained UTF-16 offset calculations for NSRegularExpression compatibility
- Added `skipDisableCommandTests: true` for SwiftSyntax disable command behavior
- Removed unnecessary SourceKittenFramework import
2025-06-24 09:48:25 -04:00