build(cs): temporarily mute error-level sniffs for a green baseline

`make cs` fired 2321 errors across legacy code, so it could not act as a
gate. Set the ~20 error-level sniffs to severity 0 in a clearly-marked
TEMPORARY block (and ParameterTypeHint in its own block), and add
ignore_warnings_on_exit so advisory warnings (line length, cyclomatic
"too high", silenced errors) are still reported but do not fail the run.
`make cs` now exits 0.

These mutes are technical debt to unwind ONE sniff at a time (drop the
severity line, run make cs, fix, commit); no new violations should be
added under a muted rule. Muting ParameterTypeHint also stops cs-fix from
re-adding the null-crash param types (see TYPE_AUDIT.md). Biggest buckets:
ParameterTypeHint 1323, GlobalKeyword 452, camelCaps naming 231,
CyclomaticComplexity.MaxExceeded 174.
This commit is contained in:
Divarion_D
2026-09-13 22:28:10 +03:00
parent 942b58cec9
commit 29d98939ef
+41 -2
View File
@@ -251,12 +251,17 @@
<!-- ── Type hints ────────────────────────────────────────────────
Catch parameters with no type information (no native type hint and
no @param). Not auto-fixable — a type can't be inferred — so this is
report-only; expect many findings across legacy code. -->
no @param).
TEMPORARILY MUTED (severity 0): as a FIXER this sniff auto-added
native param types from @param docblocks that crash on null at
runtime (the "null given" footgun — see TYPE_AUDIT.md). Keep it off
until that audit is worked through, then re-enable. See the muted-rules
block at the end of this file. -->
<rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint">
<properties>
<property name="enableObjectTypeHint" value="true"/>
</properties>
<severity>0</severity>
</rule>
<!-- ── K&R / one-true-brace style (overrides PSR-12 Allman) ──────────
@@ -268,4 +273,38 @@
<property name="checkClosures" value="true"/>
</properties>
</rule>
<!-- ══════════════════════════════════════════════════════════════════
TEMPORARY: muted error rules (severity 0) — technical-debt ratchet.
These sniffs currently ERROR across legacy code (counts below, ~2321
total). They are silenced so `make cs` passes and can act as a green
baseline, and MUST be re-enabled ONE AT A TIME as each is cleaned up
(drop the line, run `make cs`, fix the fallout, commit). Do not add
NEW violations under a muted rule. ParameterTypeHint is muted above.
Warnings (line length, cyclomatic "too high", silenced errors, …) are
still reported but do NOT fail the run, so advisory noise does not
block the gate:
══════════════════════════════════════════════════════════════════════ -->
<config name="ignore_warnings_on_exit" value="1"/>
<rule ref="Squiz.PHP.GlobalKeyword"><severity>0</severity></rule> <!-- 452: legacy global $db -->
<rule ref="Generic.NamingConventions.CamelCapsFunctionName"><severity>0</severity></rule> <!-- 191: legacy method/function names -->
<rule ref="PSR1.Methods.CamelCapsMethodName"><severity>0</severity></rule>
<rule ref="Generic.Metrics.CyclomaticComplexity.MaxExceeded"><severity>0</severity></rule> <!-- 174: God-methods (TooHigh stays a warning) -->
<rule ref="Generic.Metrics.NestingLevel.MaxExceeded"><severity>0</severity></rule>
<rule ref="PEAR.Formatting.MultiLineAssignment"><severity>0</severity></rule> <!-- 49 -->
<rule ref="Generic.Strings.UnnecessaryStringConcat"><severity>0</severity></rule> <!-- 29 -->
<rule ref="PSR12.Files.FileHeader.IncorrectOrder"><severity>0</severity></rule> <!-- 29 -->
<rule ref="PSR2.Methods.MethodDeclaration.Underscore"><severity>0</severity></rule> <!-- 11 -->
<rule ref="Generic.PHP.SAPIUsage"><severity>0</severity></rule> <!-- 6 -->
<rule ref="PSR2.ControlStructures.SwitchDeclaration.TerminatingComment"><severity>0</severity></rule> <!-- 6 -->
<rule ref="Generic.NamingConventions.AbstractClassNamePrefix"><severity>0</severity></rule> <!-- 2 -->
<rule ref="PSR1.Classes.ClassDeclaration"><severity>0</severity></rule> <!-- 2: legacy non-namespaced (XC_Bootstrap) -->
<rule ref="PSR2.Classes.PropertyDeclaration.Underscore"><severity>0</severity></rule> <!-- 2 -->
<rule ref="Generic.NamingConventions.InterfaceNameSuffix"><severity>0</severity></rule> <!-- 1 -->
<rule ref="Generic.NamingConventions.TraitNameSuffix"><severity>0</severity></rule> <!-- 1 -->
<rule ref="Generic.PHP.DeprecatedFunctions"><severity>0</severity></rule> <!-- 1 -->
<rule ref="Squiz.Classes.ClassFileName"><severity>0</severity></rule> <!-- 1 -->
<rule ref="Squiz.Classes.ValidClassName"><severity>0</severity></rule> <!-- 1 -->
</ruleset>