swiftlint: drive the repo to zero violations #22

Merged
founder merged 1 commit from swiftlint-zero into main 2026-08-01 08:29:05 +00:00
Owner

Build: Apple runs SwiftLint with strict: true, so the 40 remaining violations were still failing CI. Three honest categories:

  • Excluded: Generated/BridgeJS.swift (8) — machine-written; lint the generator's inputs, not its output.
  • Removed rule: legacy_objc_type (13) — 13/13 false positives: NSFileProviderItem requires NSNumber? for documentSize/childItemCount/favoriteRank, and the rest bridge Security-framework dictionaries.
  • Fixed (14): named closure arguments, isMultiple(of:), Touch ID accessibility label, chain line break.
  • Suppressed with reasons (5): async required by protocol contract (AppIntent.perform, backend requirements, agent entry point).

Full lint: 0 violations. All touched files pass swiftc -parse.

🤖 Generated with Claude Code

`Build: Apple` runs SwiftLint with `strict: true`, so the 40 remaining violations were still failing CI. Three honest categories: - **Excluded**: `Generated/BridgeJS.swift` (8) — machine-written; lint the generator's inputs, not its output. - **Removed rule**: `legacy_objc_type` (13) — **13/13 false positives**: `NSFileProviderItem` requires `NSNumber?` for `documentSize`/`childItemCount`/`favoriteRank`, and the rest bridge Security-framework dictionaries. - **Fixed** (14): named closure arguments, `isMultiple(of:)`, Touch ID accessibility label, chain line break. - **Suppressed with reasons** (5): `async` required by protocol contract (`AppIntent.perform`, backend requirements, agent entry point). **Full lint: 0 violations.** All touched files pass `swiftc -parse`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
swiftlint: drive the repo to zero violations
Some checks failed
Build: SQLite SEE / Redacted SEE compile (pull_request) Successful in 6s
Release: If Needed / Check (Release Needed) (push) Successful in 6s
Deploy: Web / Deploy (Web) (push) Failing after 9s
Build: Web / Build (Web) (pull_request) Has started running
Build: Web / Build (Web) (push) Has started running
Build: Apple / Check (SwiftLint) (push) Successful in 18s
Build: SQLite SEE / Redacted SEE compile (push) Successful in 29s
Build: Apple / Build (iOS) (push) Failing after 34s
Build: Apple / Check (SwiftLint) (pull_request) Successful in 1m58s
Build: Apple / Build (macOS) (push) Failing after 1m16s
Build: Apple / Build (visionOS) (push) Failing after 31s
Deploy: API / Deploy (API) (push) Successful in 2m57s
Build: Apple / Build (iOS) (pull_request) Failing after 33s
Build: Apple / Build (visionOS) (pull_request) Failing after 25s
Build: Apple / Build (macOS) (pull_request) Failing after 1m8s
Build: Linux / Build (Linux x86_64) (pull_request) Failing after 22m3s
Build: Linux / Build (keystore-forge x86_64) (pull_request) Has been skipped
Build: Linux / Build (Linux x86_64) (push) Failing after 17m56s
Build: Linux / Build (keystore-forge x86_64) (push) Has been skipped
01ef63e9f9
Build: Apple runs SwiftLint with `strict: true`, so any nonzero count keeps the
check red; the 40 left after the mechanical pass were still failing CI. They
fall into three honest categories:

Excluded: Generated/BridgeJS.swift (8) — machine-written BridgeJS output from
the KaiOS wasm build. Lint the generator's inputs, not its output.

Removed rule: legacy_objc_type (13) — every hit in this codebase is NSNumber
where Apple's API shape requires it: NSFileProviderItem declares documentSize,
childItemCount, and favoriteRank as NSNumber?, and the remaining casts bridge
Security-framework dictionaries. 13/13 false positives is a rule that costs
more than it catches here.

Fixed (14): named arguments in multiline closures (item/constraint/column),
count.isMultiple(of: 2), an accessibility label on the Touch ID glyph, and a
function-chain line break.

Suppressed with reasons (5): async_without_await where async is the protocol
contract — AppIntent.perform, the HardwareKeyStore backend requirements, and
the public agent entry point. Dropping async there is an API break, not a
style fix.

Full lint now reports zero. All touched files pass swiftc -parse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
key-store/key.store!22
No description provided.