ITADN

Bug: `indentation_width` rule does not detect incorrectly indented closing braces

#6498Openwindaishi 创建于 2026-02-17
W
windaishicommented
## New Issue Checklist - [x] Updated SwiftLint to the latest version - [x] I searched for [existing GitHub issues](https://github.com/realm/SwiftLint/issues) ## Describe the bug The `indentation_width` rule fails to detect when a closing brace `}` is indented incorrectly (doesn't match the indentation of its opening statement). The rule correctly detects indentation issues on regular statements but misses closing braces that are under-indented. ## Steps to Reproduce Run the following command: ```bash echo 'import SwiftUI struct TestView: View { var body: some View { VStack { Text("Hello") } .onTapGesture { if true { print("inside if") } } } }' | swiftlint lint --no-cache --use-stdin --enable-all-rules ``` ### File structure explained: ```swift import SwiftUI struct TestView: View { var body: some View { VStack { Text("Hello") } .onTapGesture { if true { // Line 9: 12 spaces (3 levels) print("inside if") // Line 10: 16 spaces (4 levels) ✓ } // Line 11: 8 spaces (2 levels) ✗ WRONG - should be 12 } // Line 12: 8 spaces (2 levels) ✓ } } ``` The closing `}` on line 11 (closing the `if` statement) has only 8 spaces of indentation, but it should have 12 spaces to match the `if true {` on line 9. ## Expected behavior SwiftLint should report an `indentation_width` violation on line 11: ``` <nopath>:11:1: warning: Indentation Width Violation: Code should be indented using one tab or 4 spaces (indentation_width) ``` ## Actual behavior No violation is reported for line 11. The output only shows other violations (explicit_acl, file_header, etc.) but **no `indentation_width` violation** for the incorrectly indented closing brace. ## Proof that the rule works for other cases The rule DOES correctly detect indentation issues on regular statements: ```bash echo 'import SwiftUI struct TestView: View { var body: some View { if true { print("wrong indent") } } }' | swiftlint lint --no-cache --use-stdin --enable-all-rules ``` Output includes: ``` <nopath>:6:1: error: Indentation Width Violation: Code should be indented using one tab or 4 spaces (indentation_width) ``` This proves the rule is active and working, but it specifically misses closing braces. ## Environment - **SwiftLint version:** 0.63.2 - **Installation method:** Pre-built binary - **Xcode version:** 16.x - **macOS version:** macOS 15.x (Sequoia)
0 条评论