@@ -62,12 +62,11 @@ public function __construct(
6262 }
6363
6464 /**
65- * @param array<string, true> $analysedFiles
6665 * @param callable(Node $node, Scope $scope): void|null $outerNodeCallback
6766 */
6867 public function analyseFile (
6968 string $ file ,
70- array $ analysedFiles ,
69+ AnalysedFilesResolver $ analysedFilesResolver ,
7170 RuleRegistry $ ruleRegistry ,
7271 CollectorRegistry $ collectorRegistry ,
7372 ?callable $ outerNodeCallback ,
@@ -86,13 +85,14 @@ public function analyseFile(
8685 $ exportedNodes = [];
8786 $ linesToIgnore = [];
8887 $ unmatchedLineIgnores = [];
88+
8989 if (is_file ($ file )) {
9090 try {
91- $ this ->collectErrors ($ analysedFiles );
91+ $ this ->collectErrors ($ analysedFilesResolver );
9292 $ parserNodes = $ this ->parser ->parseFile ($ file );
9393 $ linesToIgnore = $ unmatchedLineIgnores = [$ file => $ this ->getLinesToIgnoreFromTokens ($ parserNodes )];
9494 $ temporaryFileErrors = [];
95- $ nodeCallback = function (Node $ node , Scope $ scope ) use (&$ fileErrors , &$ fileCollectedData , &$ fileDependencies , &$ exportedNodes , $ file , $ ruleRegistry , $ collectorRegistry , $ outerNodeCallback , $ analysedFiles , &$ linesToIgnore , &$ unmatchedLineIgnores , &$ temporaryFileErrors ): void {
95+ $ nodeCallback = function (Node $ node , Scope $ scope ) use (&$ fileErrors , &$ fileCollectedData , &$ fileDependencies , &$ exportedNodes , $ file , $ ruleRegistry , $ collectorRegistry , $ outerNodeCallback , $ analysedFilesResolver , &$ linesToIgnore , &$ unmatchedLineIgnores , &$ temporaryFileErrors ): void {
9696 if ($ node instanceof Node \Stmt \Trait_) {
9797 foreach (array_keys ($ linesToIgnore [$ file ] ?? []) as $ lineToIgnore ) {
9898 if ($ lineToIgnore < $ node ->getStartLine () || $ lineToIgnore > $ node ->getEndLine ()) {
@@ -203,7 +203,7 @@ public function analyseFile(
203203
204204 try {
205205 $ dependencies = $ this ->dependencyResolver ->resolveDependencies ($ node , $ scope );
206- foreach ($ dependencies ->getFileDependencies ($ scope ->getFile (), $ analysedFiles ) as $ dependentFile ) {
206+ foreach ($ dependencies ->getFileDependencies ($ scope ->getFile (), $ analysedFilesResolver ) as $ dependentFile ) {
207207 $ fileDependencies [] = $ dependentFile ;
208208 }
209209 if ($ dependencies ->getExportedNode () !== null ) {
@@ -318,14 +318,11 @@ private function getLinesToIgnoreFromTokens(array $nodes): array
318318 return $ nodes [0 ]->getAttribute ('linesToIgnore ' , []);
319319 }
320320
321- /**
322- * @param array<string, true> $analysedFiles
323- */
324- private function collectErrors (array $ analysedFiles ): void
321+ private function collectErrors (AnalysedFilesResolver $ analyzedFilesResolver ): void
325322 {
326323 $ this ->filteredPhpErrors = [];
327324 $ this ->allPhpErrors = [];
328- set_error_handler (function (int $ errno , string $ errstr , string $ errfile , int $ errline ) use ($ analysedFiles ): bool {
325+ set_error_handler (function (int $ errno , string $ errstr , string $ errfile , int $ errline ) use ($ analyzedFilesResolver ): bool {
329326 if ((error_reporting () & $ errno ) === 0 ) {
330327 // silence @ operator
331328 return true ;
@@ -339,7 +336,7 @@ private function collectErrors(array $analysedFiles): void
339336 return true ;
340337 }
341338
342- if (!isset ( $ analysedFiles [ $ errfile] )) {
339+ if (!$ analyzedFilesResolver -> isInAnalyzedFiles ( $ errfile )) {
343340 return true ;
344341 }
345342
0 commit comments