From 62e08e62ed482b580810f89778254af2f75fc9ad Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Fri, 9 Oct 2026 00:59:17 +0700 Subject: [PATCH] perf: Skip recursive parent and function fallback resolution when only ruleset defined --- src/Analyser/Analyser.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Analyser/Analyser.php b/src/Analyser/Analyser.php index dcea7e6e..84cae1c4 100644 --- a/src/Analyser/Analyser.php +++ b/src/Analyser/Analyser.php @@ -223,17 +223,22 @@ private function doAnalyse( $layerExcludePaths, ); $classNodes = $extractionResult->classNodes; - $classNodes = $this->withRecursiveParents($classNodes, $extractionResult->anonymousClassNodes); - $this->resolveFunctionFallbackCalls( - [ - $classNodes, + // Node rules may query inheritance and resolved function calls. + // Declarative ruleset checks use separate dependency resolution. + if ($nodeRules !== []) { + $classNodes = $this->withRecursiveParents($classNodes, $extractionResult->anonymousClassNodes); + + $this->resolveFunctionFallbackCalls( + [ + $classNodes, + $extractionResult->functionNodes, + $extractionResult->anonymousFunctionNodes, + $extractionResult->anonymousClassNodes, + ], $extractionResult->functionNodes, - $extractionResult->anonymousFunctionNodes, - $extractionResult->anonymousClassNodes, - ], - $extractionResult->functionNodes, - ); + ); + } if ($hasExtendedClassAwareRule || $hasUsedInterfaceAwareRule || $hasUsedTraitAwareRule) { $this->markClassLikeUsage(