Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .phpstan/ForbidDeclareStrictTypesRule.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\AI\PHPStan;

use PhpParser\Node;
use PhpParser\Node\Stmt\Declare_;
use PhpParser\Node\Stmt\DeclareDeclare;
use PHPStan\Analyser\Scope;
use PHPStan\Rules\Rule;
use PHPStan\Rules\RuleErrorBuilder;

/**
* PHPStan rule that forbids usage of declare(strict_types=1) statements.
*
* This rule enforces that strict_types declaration should not be used.
*
* @author Oskar Stark <oskarstark@googlemail.com>
*
* @implements Rule<Declare_>
*/
final class ForbidDeclareStrictTypesRule implements Rule
{
public function getNodeType(): string
{
return Declare_::class;
}

public function processNode(Node $node, Scope $scope): array
{
if (!$node instanceof Declare_) {
return [];
}

$errors = [];

foreach ($node->declares as $declare) {
if ($declare instanceof DeclareDeclare) {
$key = $declare->key->toString();
if ('strict_types' === $key) {
$errors[] = RuleErrorBuilder::message(
'Usage of declare(strict_types=1) is forbidden. Remove the declare statement.'
)
->line($node->getLine())
->identifier('symfonyAi.forbidDeclareStrictTypes')
->tip('Remove the declare(strict_types=1) statement from the file.')
->build();
}
}
}

return $errors;
}
}
1 change: 1 addition & 0 deletions .phpstan/extension.neon
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
rules:
- Symfony\AI\PHPStan\ForbidDeclareStrictTypesRule
- Symfony\AI\PHPStan\ForbidNativeExceptionRule
Loading