Skip to content

Commit fe772e5

Browse files
committed
Fix CI: coding standard violations and PHPStan self-analysis error
- Use early exit (continue) instead of nested if blocks in ResultCacheManager - Add missing `use function count` in WorkerCommand - Remove same-namespace import in AnalyserTest - Fix mergeExternalFileDependencies: strip hashes from cached data in restore() before passing to ResultCache, matching the pattern used by regular dependencies Co-Authored-By: Claude Code
1 parent f26be0a commit fe772e5

3 files changed

Lines changed: 21 additions & 14 deletions

File tree

src/Analyser/ResultCache/ResultCacheManager.php

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -358,18 +358,24 @@ public function restore(array $allAnalysedFiles, bool $debug, bool $onlyFiles, ?
358358
$invertedUsedTraitDependenciesToReturn = [];
359359

360360
// Check external file dependencies for incremental re-analysis
361+
/** @var array<string, array{fileHash: string, dependentFiles: list<string>}> $cachedExternalDependencies */
361362
$cachedExternalDependencies = $data['externalDependencies'] ?? [];
362-
$externalDependenciesToReturn = $cachedExternalDependencies;
363+
$externalDependenciesToReturn = [];
363364
foreach ($cachedExternalDependencies as $externalFile => $externalData) {
364-
if (!is_file($externalFile) || $this->getFileHash($externalFile) !== $externalData['fileHash']) {
365-
if ($output->isVeryVerbose()) {
366-
$output->writeLineFormatted(sprintf('External file %s changed, re-analysing dependent files.', $externalFile));
367-
}
368-
foreach ($externalData['dependentFiles'] as $dependentFile) {
369-
if (is_file($dependentFile)) {
370-
$filesToAnalyse[] = $dependentFile;
371-
}
365+
$externalDependenciesToReturn[$externalFile] = $externalData['dependentFiles'];
366+
if (is_file($externalFile) && $this->getFileHash($externalFile) === $externalData['fileHash']) {
367+
continue;
368+
}
369+
370+
if ($output->isVeryVerbose()) {
371+
$output->writeLineFormatted(sprintf('External file %s changed, re-analysing dependent files.', $externalFile));
372+
}
373+
foreach ($externalData['dependentFiles'] as $dependentFile) {
374+
if (!is_file($dependentFile)) {
375+
continue;
372376
}
377+
378+
$filesToAnalyse[] = $dependentFile;
373379
}
374380
}
375381
$errors = $data['errorsCallback']();
@@ -983,8 +989,7 @@ private function mergeExternalFileDependencies(
983989

984990
// Un-invert cached external dependencies: external file => [dependents] → dependent => [external files]
985991
$cachedPerFile = [];
986-
foreach ($cachedExternalDependencies as $externalFile => $externalData) {
987-
$dependentFiles = $externalData['dependentFiles'] ?? $externalData;
992+
foreach ($cachedExternalDependencies as $externalFile => $dependentFiles) {
988993
foreach ($dependentFiles as $dependentFile) {
989994
$cachedPerFile[$dependentFile][] = $externalFile;
990995
}
@@ -994,9 +999,11 @@ private function mergeExternalFileDependencies(
994999
$merged = $cachedPerFile;
9951000
foreach ($filesToAnalyse as $file) {
9961001
unset($merged[$file]);
997-
if (array_key_exists($file, $freshExternalDependencies)) {
998-
$merged[$file] = $freshExternalDependencies[$file];
1002+
if (!array_key_exists($file, $freshExternalDependencies)) {
1003+
continue;
9991004
}
1005+
1006+
$merged[$file] = $freshExternalDependencies[$file];
10001007
}
10011008

10021009
return $merged;

src/Command/WorkerCommand.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
use function array_merge;
3030
use function array_unshift;
3131
use function array_values;
32+
use function count;
3233
use function defined;
3334
use function is_array;
3435
use function is_bool;

tests/PHPStan/Analyser/AnalyserTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use PhpParser\Lexer;
77
use PhpParser\NodeVisitor\NameResolver;
88
use PhpParser\Parser\Php7;
9-
use PHPStan\Analyser\ExternalFileDependencyRegistrar;
109
use PHPStan\Analyser\Ignore\IgnoredErrorHelper;
1110
use PHPStan\Analyser\Ignore\IgnoreLexer;
1211
use PHPStan\Collectors\Registry as CollectorRegistry;

0 commit comments

Comments
 (0)