Commit Graph

49 Commits

Author SHA1 Message Date
Declan McKenna d3220ed108 Add ignore_regex option to large_tuple rule (#6452) 2026-01-24 14:52:12 +00:00
Saleem Abdulrasool 339d250464 Port to Windows (#5030)
At least ensure it compiles just fine on Windows.

* build: add CryptoSwift dependency for Windows
* SwiftLintBuiltInRules: treat Windows similar to Linux wrt `NSDataDetector`
* SwiftLintCore: initial pass for Windows support

Add some Windows specific handling for the paths in SwiftLintCore.  The
one piece that this change does not cover is the handling of `glob` as
that is not an ISO C standard function and as such there is no `glob` on
Windows.  This will be worked through separately.

* swiftlint: add a Windows port

This enables building the swiftlint command on Windows.  There is no
system ioctl for terminal access, instead, we can use the Win32 Console
API surface to query the console size.  In the case of a failure, assume
the width to be 80-columns (as the standard VGA console is 80x25).

* WIP/SwiftLintCore: port the `glob` function to Windows

Windows does not support `glob` as a standard C library function as that
is not part of the C standard.  Attempt to emulate that through the use
of `FindFirstFileW` and `FindNextFile` to iterate the matching files
given a pattern.  This should allow us to start enumerating the files as
if we had `glob` available.
2025-11-21 09:59:28 +01:00
Danny Mösch f1562a629e Exclude only function signatures (#6348) 2025-11-18 17:27:53 +01: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
Danny Mösch 4065fc8437 Enable upcoming feature MemberImportVisibility (#6286) 2025-10-08 08:12:05 +02:00
Danny Mösch dcbdcc92d1 Ignore function, initializer and subscript declarations alike (#6242) 2025-09-07 11:53:32 +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 c1ffdfe891 Enable prefer_condition_list rule (#6163) 2025-07-12 09:41:00 -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
Chris Brakebill 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
JP Simard 4ecae5b252 Migrate LineLengthRule from SourceKit to SwiftSyntax (#6111)
Convert LineLengthRule to use SwiftSyntax instead of SourceKit for
improved performance and better detection accuracy.

The SwiftSyntax implementation:
- Uses ViolationsSyntaxVisitor pattern with line-based validation
- Pre-computes ignored lines using helper visitors for efficiency
- Implements pure SwiftSyntax comment detection without SourceKit
- Correctly handles function declarations, multiline strings
- Maintains all configuration options including URL stripping
- Preserves exact line position reporting for violations
2025-06-21 14:47:19 -04:00
Danny Mösch 286e67ff23 Report more specific target types (#6123) 2025-06-21 17:17:55 +02:00
Danny Mösch 18403e8604 Harmonize violation positions (#6124) 2025-06-21 17:15:25 +02:00
Danny Mösch 5a3c8c9ba3 Inline rule-specific parts of BodyLengthVisitor (#6121)
Main goal is to bring implementations, rules and examples closer together.
Another advantage is that the rule's layouts are in line with other
`@SwiftSyntaxRule`s.

After the refactoring, violation messages can be
better adapted to the object causing the issue. Violation positions
should be harmonized and more cases for protocols, subscripts and
deinitializers can be added.
2025-06-21 14:02:28 +02:00
Danny Mösch 573ac4da7d Report warning threshold (#6122) 2025-06-21 01:40:06 +02:00
Danny Mösch 7e0ea598ce Let large_tuple rule adhere to common style (#6120) 2025-06-20 22:23:29 +00:00
JP Simard d1687859fe Migrate FileLengthRule from SourceKit to SwiftSyntax (#6100)
Convert FileLengthRule to use SwiftSyntax instead of SourceKit for
improved performance and fewer false positives.

The SwiftSyntax implementation:
- Uses ViolationsSyntaxVisitor pattern with token traversal
- Correctly handles multiline tokens by counting all spanned lines
- Properly excludes comment-only and whitespace-only lines
- Accurately attributes trivia to correct line positions
- Extracts common line range logic to reduce code duplication
2025-06-18 22:17:47 +00:00
Henry ed20aa593d Add new option ignores_multiline_strings to line_length rule (#6014) 2025-04-03 14:28:41 -04:00
Martin Redington 5517d233fd Started to add rationales (#5681) 2025-03-06 10:16:30 +00:00
Danny Mösch ff21ff796c Specify rule properties in attribute 2024-12-26 20:40:29 +01:00
Danny Mösch 15e1598d43 Move reusable functionality from SwiftLintBuiltInRules to SwiftLintCore 2024-12-23 12:51:43 +01:00
Danny Mösch 88191fe58e Enable prefer_key_path rule and fix all violations (#5721) 2024-08-03 14:21:47 +02:00
Danny Mösch 2442e10f13 Avoid needless indentation in examples (#5675) 2024-07-16 13:57:05 -04:00
Danny Mösch cc4b569c54 Enable unused_parameter rule and fix all violations (#5673) 2024-07-14 11:20:50 -04:00
Martin Redington ed10aec5f8 Enable implicit_return and fix all violations (#5658) 2024-07-10 12:15:19 +01:00
Danny Mösch c810459e6a Enforce mandatory trailing comma and fix all violations (#5640) 2024-06-28 05:36:50 +00:00
Danny Mösch 2d28166d21 Enable upcoming feature "Concise Magic File" (#5637) 2024-06-22 11:22:55 +02:00
Hayashi Tatsuya 6d38558bd4 Rewrite nesting rule with SwiftSyntax (#5439) 2024-02-07 15:35:38 -05:00
Kasra Babaei 77bae5429c Allow line_length rule to ignore certain lines based on regex patterns (#5437) 2024-01-26 09:40:59 +01:00
m.a 443cbd7fce Add new option ignore_typealiases_and_associatedtypes to nesting rule (#5433) 2024-01-21 12:28:23 -05:00
Marcelo Fabri 715198ae3f Rewrite cyclomatic_complexity with SwiftSyntax (#5308) 2023-10-29 11:17:45 -07:00
Danny Mösch 40bd97038a Support arbitrary configurations in @SwiftSyntaxRule (#5275)
Almost all rules based on SwiftSyntax can be set up now by just adding
`@SwiftSyntaxRule` to the rule struct.
2023-10-16 19:34:43 +02:00
Danny Mösch 2ed1fc2f27 Let all rules be configurable (#5274) 2023-10-12 17:30:45 +02:00
Danny Mösch 075017cba5 Merge modifier extensions into one (#5234) 2023-09-24 23:50:10 +02:00
Danny Mösch b281a8d33a Update SwiftSyntax (#5168) 2023-08-30 22:57:10 +02:00
Danny Mösch 1f65377f9c Remove more superfluous newline characters from examples (#5159) 2023-08-06 23:44:52 +02:00
Danny Mösch f10fc3056b Remove superfluous newline characters from examples (#5158) 2023-08-06 12:23:26 -04:00
Danny Mösch 85c4a3a03d Revert "Allow to initialize Examples by string literals (#5154)" (#5155)
This reverts commit 56461c3ab4.
2023-08-04 00:03:26 +02:00
Danny Mösch 56461c3ab4 Allow to initialize Examples by string literals (#5154) 2023-08-03 23:03:41 +02:00
Danny Mösch a2ba0a0626 Omit "Rule" in configuration names (#5024) 2023-05-20 04:39:04 -04:00
Danny Mösch 3f039f26d5 Connect configs with their referencing rules to have some context in error logging (#5017)
With the binding of configurations to their associated rule types
"unknown configuration" errors can be made more specific mentioning
also the rule's identifier in the printed message.
2023-05-19 20:58:24 +02:00
Danny Mösch d938b2d3c3 Specify default options in configurations only (#5020) 2023-05-18 17:21:30 +02:00
JP Simard a7bc9e20c7 Move built-in rules to new SwiftLintBuiltInRules module (#4950) 2023-04-27 11:16:01 -04:00