pelican-panel-mirror/app/PHPStan/ForbiddenGlobalFunctionsRule.php
2025-06-23 08:54:51 -04:00

40 lines
1.0 KiB
PHP

<?php
namespace App\PHPStan;
use PhpParser\Node\Name;
use PhpParser\Node;
use PhpParser\Node\Expr\FuncCall;
use PHPStan\Analyser\Scope;
use PHPStan\Rules\Rule;
use PHPStan\Rules\RuleErrorBuilder;
class ForbiddenGlobalFunctionsRule implements Rule
{
/** @var string[] */
public const FORBIDDEN_FUNCTIONS = ['app', 'resolve'];
public function getNodeType(): string
{
return FuncCall::class;
}
public function processNode(Node $node, Scope $scope): array
{
/** @var FuncCall $node */
if ($node->name instanceof Name) {
$functionName = (string) $node->name;
if (in_array($functionName, self::FORBIDDEN_FUNCTIONS, true)) {
return [
RuleErrorBuilder::message(sprintf(
'Usage of global function "%s" is forbidden.',
$functionName,
))->identifier('myCustomRules.forbiddenGlobalFunctions')->build(),
];
}
}
return [];
}
}