@@ -63,12 +63,11 @@ public function __construct(
6363 }
6464
6565 /**
66- * @param array<string, true> $analysedFiles
6766 * @param callable(Node $node, Scope $scope): void|null $outerNodeCallback
6867 */
6968 public function analyseFile (
7069 string $ file ,
71- array $ analysedFiles ,
70+ AnalysedFilesResolver $ analysedFilesResolver ,
7271 RuleRegistry $ ruleRegistry ,
7372 CollectorRegistry $ collectorRegistry ,
7473 ?callable $ outerNodeCallback ,
@@ -88,13 +87,14 @@ public function analyseFile(
8887 $ exportedNodes = [];
8988 $ linesToIgnore = [];
9089 $ unmatchedLineIgnores = [];
90+
9191 if (is_file ($ file )) {
9292 try {
93- $ this ->collectErrors ($ analysedFiles );
93+ $ this ->collectErrors ($ analysedFilesResolver );
9494 $ parserNodes = $ this ->parser ->parseFile ($ file );
9595 $ linesToIgnore = $ unmatchedLineIgnores = [$ file => $ this ->getLinesToIgnoreFromTokens ($ parserNodes )];
9696 $ temporaryFileErrors = [];
97- $ nodeCallback = function (Node $ node , Scope $ scope ) use (&$ fileErrors , &$ fileCollectedData , &$ fileDependencies , &$ usedTraitFileDependencies , &$ exportedNodes , $ file , $ ruleRegistry , $ collectorRegistry , $ outerNodeCallback , $ analysedFiles , &$ linesToIgnore , &$ unmatchedLineIgnores , &$ temporaryFileErrors ): void {
97+ $ nodeCallback = function (Node $ node , Scope $ scope ) use (&$ fileErrors , &$ fileCollectedData , &$ fileDependencies , &$ usedTraitFileDependencies , &$ exportedNodes , $ file , $ ruleRegistry , $ collectorRegistry , $ outerNodeCallback , $ analysedFilesResolver , &$ linesToIgnore , &$ unmatchedLineIgnores , &$ temporaryFileErrors ): void {
9898 if ($ node instanceof Node \Stmt \Trait_) {
9999 foreach (array_keys ($ linesToIgnore [$ file ] ?? []) as $ lineToIgnore ) {
100100 if ($ lineToIgnore < $ node ->getStartLine () || $ lineToIgnore > $ node ->getEndLine ()) {
@@ -205,7 +205,7 @@ public function analyseFile(
205205
206206 try {
207207 $ dependencies = $ this ->dependencyResolver ->resolveDependencies ($ node , $ scope );
208- foreach ($ dependencies ->getFileDependencies ($ scope ->getFile (), $ analysedFiles ) as $ dependentFile ) {
208+ foreach ($ dependencies ->getFileDependencies ($ scope ->getFile (), $ analysedFilesResolver ) as $ dependentFile ) {
209209 $ fileDependencies [] = $ dependentFile ;
210210 }
211211 if ($ dependencies ->getExportedNode () !== null ) {
@@ -224,7 +224,7 @@ public function analyseFile(
224224 }
225225
226226 $ usedTraitDependencies = $ this ->dependencyResolver ->resolveUsedTraitDependencies ($ node );
227- foreach ($ usedTraitDependencies ->getFileDependencies ($ scope ->getFile (), $ analysedFiles ) as $ dependentFile ) {
227+ foreach ($ usedTraitDependencies ->getFileDependencies ($ scope ->getFile (), $ analysedFilesResolver ) as $ dependentFile ) {
228228 $ usedTraitFileDependencies [] = $ dependentFile ;
229229 }
230230 };
@@ -330,14 +330,11 @@ private function getLinesToIgnoreFromTokens(array $nodes): array
330330 return $ nodes [0 ]->getAttribute ('linesToIgnore ' , []);
331331 }
332332
333- /**
334- * @param array<string, true> $analysedFiles
335- */
336- private function collectErrors (array $ analysedFiles ): void
333+ private function collectErrors (AnalysedFilesResolver $ analyzedFilesResolver ): void
337334 {
338335 $ this ->filteredPhpErrors = [];
339336 $ this ->allPhpErrors = [];
340- set_error_handler (function (int $ errno , string $ errstr , string $ errfile , int $ errline ) use ($ analysedFiles ): bool {
337+ set_error_handler (function (int $ errno , string $ errstr , string $ errfile , int $ errline ) use ($ analyzedFilesResolver ): bool {
341338 if ((error_reporting () & $ errno ) === 0 ) {
342339 // silence @ operator
343340 return true ;
@@ -351,7 +348,7 @@ private function collectErrors(array $analysedFiles): void
351348 return true ;
352349 }
353350
354- if (!isset ( $ analysedFiles [ $ errfile] )) {
351+ if (!$ analyzedFilesResolver -> isInAnalyzedFiles ( $ errfile )) {
355352 return true ;
356353 }
357354
0 commit comments