You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Edge cases found along the way were fixed and tested (e.g. InputIteratorTask with a nested IteratorAggregate, CsvResource blank header line, XpathEvaluatorTransformer invalid query / namespace nodes, SlugifyTransformer invalid UTF-8).
Planned for v6.0 (draft PRs)
Level 7 → 8: the 16 remaining errors come from native nullable types that are never null in practice (AbstractConfigurableTask::getOptions(): ?array, ProcessState::getContextualizedOptions(): ?array, CsvResource::$lineNumber, ProcessHistory::$startDate). Narrowing them is a BC break — [v6] #143 - Narrow nullable native types, improve PHPStan level to 8 #253 (milestone v6.0)
Levels 9 and 10: ~500 errors, mostly mixed values read from $options[...]. The analysis on the v6 branch shows they can all be fixed with PHPDoc and local type narrowing, without changing native signatures, so they do not require another major version.
Activity
chore(quality) #143 Remove all PHPStan ignores at level 6: add missin…
Merge pull request #238 from cleverage/143
Merge pull request #252 from cleverage/143-level-8
Merge pull request #254 from cleverage/143-option-types
njoubert-cleverage commentedon Oct 9, 2026
Progress
Current state on
main: PHPStan level 7, noignoreErrors, no@phpstan-ignore.Done
ignoreErrorsand@phpstan-ignore-*comments, level 6 clean — #143 - Remove all PHPStan ignores at level 6 #238split_character,write_headers,log_empty_lines) — #143 - Type the remaining untyped task options #254Edge cases found along the way were fixed and tested (e.g.
InputIteratorTaskwith a nestedIteratorAggregate,CsvResourceblank header line,XpathEvaluatorTransformerinvalid query / namespace nodes,SlugifyTransformerinvalid UTF-8).Planned for v6.0 (draft PRs)
nullin practice (AbstractConfigurableTask::getOptions(): ?array,ProcessState::getContextualizedOptions(): ?array,CsvResource::$lineNumber,ProcessHistory::$startDate). Narrowing them is a BC break — [v6] #143 - Narrow nullable native types, improve PHPStan level to 8 #253 (milestone v6.0)ZipTask/UnzipTaskoverridegetOptions(): ?array, fatal with [v6] #143 - Narrow nullable native types, improve PHPStan level to 8 #253. Compatible with v5 and v6, must be released before process-bundle v6.0Next (v6.x, no BC expected)
mixedvalues read from$options[...]. The analysis on the v6 branch shows they can all be fixed with PHPDoc and local type narrowing, without changing native signatures, so they do not require another major version.