Files
git-contribution-graph/PHP-Stan-Errors.md
T
haylan de831beaaa chore(phpstan): raise analyser memory limit and record resolved findings
Add --memory-limit=512M to the phpstan composer script — the default
128M crashed the level-8 run under parallel workers. Update
PHP-Stan-Errors.md to note all 22 catalogued findings are now resolved.
2026-07-12 23:43:52 +02:00

2.4 KiB

PHPStan level 8 — first run

Resolved. All 22 errors below were closed by adding the missing array-shape docblocks (plus two (int) strtotime() casts and an array_values() re-index in ContributionCollection). composer phpstan now reports zero errors. Kept here as a record of what level 8 flagged on first run.

composer phpstan (level 8, paths: [src, tests]) reports 22 errors, all missingType.iterableValue / missingType.generics — none are correctness bugs, all are missing @param/@return array-shape docblocks on iterable parameters.

Run: docker compose exec graph composer phpstan (needs --memory-limit=512M if run directly via vendor/bin/phpstan analyse, the default 128M crashes on this project's parallel workers).

missingType.iterableValueiterable $providers constructor params

  • src/Command/RefetchContributionsCommand.php:29
  • src/Service/ContributionAggregator.php:16
  • src/Service/Provider/ProviderHealthChecker.php:11

Fix: add @param iterable<ProviderInterface> $providers above each constructor.

missingType.iterableValueSvgRenderer.php (8 occurrences)

Every array parameter/return on render(), buildGrid(), computeStats(), renderMonthLabels(), renderCells(), renderLegend() is untyped. Fix: add @param array<string, int> / @return array<...> shapes matching each method's actual contents (contribution date=>count maps, grid cell arrays, color arrays).

missingType.generics / assign.propertyTypeContributionCollection.php

  • Line 17: $contributions is typed array<int, Contribution> but array_map over Contribution ...$contributions in the constructor can produce non-sequential/string keys. Fix: re-index with array_values() before assigning, or relax the property type to array<array-key, Contribution>.
  • Line 20: getIterator(): \ArrayIterator needs generic types: @return \ArrayIterator<int, Contribution>.

missingType.iterableValue — test doubles/providers (8 occurrences)

Stub/fixture helper methods with untyped array params in RefetchContributionsCommandTest, ContributionAggregatorTest, GitHubProviderTest, GitLabProviderTest, GiteaProviderTest, and the two PHPUnit data providers in SvgRendererTest. Fix: add @param array<string, int> $fresh (or the relevant shape) / @return iterable<string, array{...}> on the data providers.