chore(rules): align lint config and pointer with canonical rules-swift

Make public/rules-swift the canonical source (per project direction) and adopt
its opt-in lint rules that PureXML lacked: empty_count, explicit_init, first_where,
sorted_first_last, unused_import, plus its todo disable. All pass with zero
violations on the existing sources.

PureXML keeps its coherent, stricter tuning where the canon is a self-described
'starting point': force_unwrapping/force_try/force_cast = error (safety), and
trailing commas mandated in both swiftformat (--commas always) and swiftlint
(mandatory_comma) to resolve the canon's formatter-adds vs linter-flags mismatch.
docs/rules/README.md now points at public/rules-swift and documents the tuning.
This commit is contained in:
Mihaela Mihaljevic 2026-06-18 20:30:46 +02:00
parent d046189ad6
commit c6f305357c
2 changed files with 15 additions and 2 deletions

View File

@ -5,10 +5,18 @@
# build plus test ships with the engine package.
opt_in_rules:
- force_unwrapping
# Adopted from the canonical rules-swift opt-in set.
- empty_count
- explicit_init
- first_where
- sorted_first_last
- unused_import
disabled_rules:
# Suggests Foundation's String(bytes:encoding:); PureXML is Foundation-free, so
# String(decoding:as:) from the standard library is the correct conversion.
- optional_data_string_conversion
# rules-swift disables todo; PureXML tracks TODOs in issues, not the linter.
- todo
excluded:
- .build
- DerivedData

View File

@ -25,6 +25,11 @@ Project-specific overrides:
The broader rule files are retained for detailed guidance. When they include
generic examples, apply the PureXML-specific overrides above.
Canonical Swift rules live at `/Volumes/Code/DeveloperExt/private/rules-swift`
Canonical Swift rules live at `/Volumes/Code/DeveloperExt/public/rules-swift`
(especially `validation-rules.md` and `parsing-rules.md`). Prefer that source
when `docs/rules/` copies drift.
when `docs/rules/` copies drift. PureXML's committed `.swiftlint.yml` and
`.swiftformat` are the coherent project tuning of that canon: they adopt its
opt-in rule set and shared formatter directives, keep stricter safety
(`force_unwrapping`/`force_try`/`force_cast` = error), and resolve the canon's
`--commas always` vs default-`trailing_comma` mismatch by mandating trailing
commas in both tools.