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
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
7348cf0f4a
Use SwiftSyntax 6.3 pre-release 2025-09-15 ( #6206 )
2025-09-29 14:59:47 +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
4859fa8e82
Ensure that headers matched against always end in a newline ( #6234 )
2025-09-04 23:09:35 +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
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
Leopold Lemmermann
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
Danny Mösch
c1ffdfe891
Enable prefer_condition_list rule ( #6163 )
2025-07-12 09:41:00 -04:00
Danny Mösch
6af2aed49d
Ensure that closure_end_indentation doesn't drop comments ( #6158 )
2025-07-09 15:54:59 -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
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
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
Kent Kaseda
c22de52b9b
Respect ignore_swiftui_view_bodies option in view builders and preview macros/providers ( #6075 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2025-06-22 01:32:48 +02:00
JP Simard
5a2cf4b1fe
Remove dead code ( #6125 )
...
In particular lots of stuff that used to be needed with SourceKit that
we no longer need to keep around.
Identified using Periphery: https://github.com/peripheryapp/periphery
2025-06-21 15:19:37 -04:00
JP Simard
cc03c83eb9
Migrate ClosureEndIndentationRule from SourceKit to SwiftSyntax ( #6109 )
...
* Migrate ClosureEndIndentationRule from SourceKit to SwiftSyntax
- Converted rule to SwiftSyntax
- Implemented recursive anchor detection for method chains
- Fixed indentation calculation for trailing closures
- Fixed correction logic to properly handle existing whitespace
* Revert debug changes to OSSCheck
* Count whitespace for indentation, not first non-whitespace position
* Simplify `hasNewlineInTrivia` calculation
* Update changelog
2025-06-21 11:01:20 -04:00
Matt Pennig
1e25cf6be6
Migrate VerticalWhitespaceRule from SourceKit to SwiftSyntax ( #6103 )
...
* Migrate VerticalWhitespaceRule from SourceKit to SwiftSyntax
* Adds tests for new horizontal whitespace behavior
2025-06-19 17:31:51 -04:00
Danny Mösch
f961ad1728
Prefer string blocks ( #6090 )
2025-06-15 16:00:39 -04:00
Danny Mösch
a3aec89e21
Add test case for trailing comma in multiline arguments ( #6085 )
2025-05-21 07:29:00 -04:00
Kent Kaseda
e1ac6f8607
Remove validates_start_with_lowercase option entirely ( #6077 )
2025-05-15 16:48:00 -04:00
Danny Mösch
47335d7f95
Remove tracking of correction positions ( #5950 )
...
Report number of corrections per file instead.
2025-04-05 06:04:37 -04:00
Danny Mösch
2578cb3862
Use SwiftSyntax version 601.0.0 ( #6003 )
2025-04-03 21:27:57 +02:00
Danny Mösch
b14272d4f2
Rewrite type_contents_order rule with SwiftSyntax ( #6002 )
2025-03-17 20:15:02 +01:00
Martin Redington
5517d233fd
Started to add rationales ( #5681 )
2025-03-06 10:16:30 +00:00
Danny Mösch
ae8aeb3995
Add option to disable redundant_discardable_let in SwiftUI view bodies ( #5929 )
2025-01-03 19:30:35 +01:00
Danny Mösch
ff21ff796c
Specify rule properties in attribute
2024-12-26 20:40:29 +01:00
Dinesh Sharma
8e3b50fa61
Add new category for @IBSegueAction to type_contents_order rule ( #5524 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2024-12-14 18:02:54 -05:00
Jared Grubb
c45427e08b
Handle @unknown default in vertical_whitespace_between_cases rule ( #5843 )
2024-12-01 01:17:08 +00:00
Kim de Vos
2a723d0042
Add new option max_number_of_single_line_parameters to multiline_parameters rule ( #5781 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2024-11-24 14:14:08 +00:00
Danny Mösch
cafed078fa
Silence superfluous_else rule for availability conditions ( #5857 )
2024-11-16 21:54:59 +00:00
Danny Mösch
707a63daf0
Allow closures being directly called to be wrapped into parentheses ( #5856 )
2024-11-16 10:25:50 +00:00
Martin Redington
01f5ecd64a
Replace description.identifier with identifier ( #5837 )
2024-10-26 14:46:03 +01:00
Martin Redington
9e78054781
Preserve trailing comments for opening_brace rule ( #5780 )
2024-09-08 12:31:45 +01:00
Aryaman Sharda
ae3f0c4df9
Add new attribute_name_spacing rule ( #5669 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2024-09-06 08:26:47 -04:00
Leonardo de Sousa Rodrigues
3bb8014782
Add options to opening_brace rule that silence it on multiline statements and types ( #5521 )
...
Co-authored-by: Danny Mösch <danny.moesch@icloud.com >
2024-08-24 05:44:33 -04:00
Danny Mösch
74f4778070
Align left brace of additional trailing closures with right brace of previous trailing closure ( #5761 )
2024-08-19 17:26:48 -04:00
Danny Mösch
d5f7f9c29a
Align left closure brace with associated parent function call ( #5760 )
2024-08-19 20:19:57 +00:00
Danny Mösch
314c91f426
Check all nested if expressions in contrasted_opening_brace rule ( #5759 )
2024-08-19 15:42:10 -04:00
Danny Mösch
248ffafd83
Make contrasted_opening_brace opt-in
2024-08-07 01:02:45 +02:00
Danny Mösch
b67e82a832
Extract new contrasted_opening_brace rule from opening_brace rule ( #5723 )
2024-08-03 18:03:41 +02:00
Danny Mösch
87bc82e7b5
Restrict prefer_key_path to standard functions and function arguments ( #5722 )
...
By default, the rule triggers on and corrects closures used in functions
it "knows". With the option extending the rule, it now also triggers on
closures used in "safe" contexts, where "safe" means that a correction
would not lead to uncompilable code (ideally).
2024-08-03 15:01:40 +00:00
Danny Mösch
88191fe58e
Enable prefer_key_path rule and fix all violations ( #5721 )
2024-08-03 14:21:47 +02:00
UIApplicationMain
5f804d005b
Remove extra case statement in example ( #5717 )
2024-07-31 18:40:21 +02:00