Add SwiftLint configuration and CI gate#29
Merged
Conversation
- Introduce .swiftlint.yml scoped to Sources, Tests, and Package.swift with .build excluded so SPM checkouts are never linted. - Calibrate metric thresholds above current large files/functions while still catching significant growth; enable identifier_name min_length 2 for short names like ui. - GitHub Actions runs swiftlint lint --strict on push and PR to main using the Linux 0.58.2 binary. - Apply SwiftLint-driven fixes: for-where style, brace placement, trailing commas in GraniteEngine, Logger disable cleanup, EOF newline in Package.swift.
jonathanKingston
marked this pull request as ready for review
May 8, 2026 01:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This change adds a root
.swiftlint.ymlthat lints only first-party code (Sources/,Tests/,Package.swift) and excludes.build, so SPM checkouts are never scanned. Metric thresholds are set slightly above current hotspots soswiftlint lint --strictpasses today while still catching runaway growth.CI
A GitHub Actions workflow installs SwiftLint 0.58.2 (Linux binary, matching the toolchain noted in AGENTS) and runs
swiftlint lint --stricton push and pull requests tomain. Any new violation (including warnings) fails the job.Code
SwiftLint auto-fixes and small manual fixes:
for-wherestyle in three files,opening_braceinModelManager, trailing-comma and minor formatting inGraniteEngine, remove redundantidentifier_namedisable inLogger, and EOF newline inPackage.swift.