*/ #[AutowiredService] final class DumpTypeRule implements Rule { public function __construct(private ReflectionProvider $reflectionProvider) { } public function getNodeType(): string { return Node\Expr\FuncCall::class; } public function processNode(Node $node, Scope $scope): array { if (!$node->name instanceof Node\Name) { return []; } $args = $node->getArgs(); if (count($args) === 0) { return []; } $functionName = $this->reflectionProvider->resolveFunctionName($node->name, $scope); if ($functionName === null) { return []; } if (strtolower($functionName) !== 'phpstan\dumptype') { return []; } $errors = []; foreach ($args as $arg) { $errors[] = RuleErrorBuilder::message( sprintf( 'Dumped type: %s', $scope->getType($arg->value)->describe(VerbosityLevel::precise()), ), )->nonIgnorable()->identifier('phpstan.dumpType')->build(); } return $errors; } }