A baseline entry is historical debt and needs no justification; an ignore is a claim that the analyser is wrong and does. reportUnmatchedIgnoredErrors is on by default and…
Level 9 requires every mixed to be narrowed before use, which is a different order of work from level 8. Every boundary that decodes JSON, reads a configuration…
Model properties come from the database and the analyser cannot see the schema, so a generated docblock is the bridge and it drifts on the next migration. Generating…
A service container returning mixed and a model with magic properties defeat static analysis entirely without a framework-aware extension. The extension is not optional on a framework-heavy codebase…
After five years of 0.x, 1.0 in November is a commitment that a level will not start reporting new errors in a patch release. The practical difference is…
Level 8 checks calls on values that may be null, and it is the level where most projects discover how much of their code assumes otherwise. The temptation…