diff --git a/README.md b/README.md index 3ea70e14e..df7791404 100644 --- a/README.md +++ b/README.md @@ -2235,47 +2235,6 @@ rules:
-### NoRequiredOutsideClassRule - -Symfony #[Require]/@required should be used only in classes to avoid misuse - -```yaml -rules: - - Symplify\PHPStanRules\Rules\Symfony\NoRequiredOutsideClassRule -``` - -```php -use Symfony\Component\DependencyInjection\Attribute\Required; - -trait SomeTrait -{ - #[Required] - public function autowireSomeTrait(SomeService $someService) - { - // ... - } -} -``` - -:x: - -
- -```php -abstract class SomeClass -{ - #[Required] - public function autowireSomeClass(SomeService $someService) - { - // ... - } -} -``` - -:+1: - -
- ### SingleArgEventDispatchRule The event dispatch() method can have only 1 arg - the event object diff --git a/config/symfony-rules.neon b/config/symfony-rules.neon index ae40eb476..6cc7befc4 100644 --- a/config/symfony-rules.neon +++ b/config/symfony-rules.neon @@ -1,5 +1,4 @@ rules: - - Symplify\PHPStanRules\Rules\Symfony\NoRequiredOutsideClassRule - Symplify\PHPStanRules\Rules\Symfony\SingleArgEventDispatchRule - Symplify\PHPStanRules\Rules\Symfony\NoListenerWithoutContractRule - Symplify\PHPStanRules\Rules\Symfony\NoStringInGetSubscribedEventsRule diff --git a/src/Enum/RuleIdentifier/SymfonyRuleIdentifier.php b/src/Enum/RuleIdentifier/SymfonyRuleIdentifier.php index ed1c20b62..90d39e98d 100644 --- a/src/Enum/RuleIdentifier/SymfonyRuleIdentifier.php +++ b/src/Enum/RuleIdentifier/SymfonyRuleIdentifier.php @@ -16,8 +16,6 @@ final class SymfonyRuleIdentifier public const string NO_LISTENER_WITHOUT_CONTRACT = 'symfony.noListenerWithoutContract'; - public const string SYMFONY_NO_REQUIRED_OUTSIDE_CLASS = 'symfony.noRequiredOutsideClass'; - public const string NO_STRING_IN_GET_SUBSCRIBED_EVENTS = 'symfony.noStringInGetSubscribedEvents'; public const string SINGLE_REQUIRED_METHOD = 'symfony.singleRequiredMethod'; diff --git a/src/Rules/Symfony/NoRequiredOutsideClassRule.php b/src/Rules/Symfony/NoRequiredOutsideClassRule.php deleted file mode 100644 index 04422a012..000000000 --- a/src/Rules/Symfony/NoRequiredOutsideClassRule.php +++ /dev/null @@ -1,49 +0,0 @@ - - */ -final class NoRequiredOutsideClassRule implements Rule -{ - public const string ERROR_MESSAGE = 'Symfony #[Require]/@required should be used only in classes to avoid misuse'; - - public function getNodeType(): string - { - return Trait_::class; - } - - /** - * @param Trait_ $node - */ - public function processNode(Node $node, Scope $scope): array - { - $ruleErrors = []; - - foreach ($node->getMethods() as $classMethod) { - if (! SymfonyRequiredMethodAnalyzer::detect($classMethod)) { - continue; - } - - $ruleErrors[] = RuleErrorBuilder::message(self::ERROR_MESSAGE) - ->identifier(SymfonyRuleIdentifier::SYMFONY_NO_REQUIRED_OUTSIDE_CLASS) - ->line($classMethod->getLine()) - ->build(); - } - - return $ruleErrors; - } -} diff --git a/tests/Rules/Symfony/NoRequiredOutsideClassRule/Fixture/SomeClassUsingTrait.php b/tests/Rules/Symfony/NoRequiredOutsideClassRule/Fixture/SomeClassUsingTrait.php deleted file mode 100644 index 5926b2336..000000000 --- a/tests/Rules/Symfony/NoRequiredOutsideClassRule/Fixture/SomeClassUsingTrait.php +++ /dev/null @@ -1,9 +0,0 @@ -> $expectedErrorsWithLines - */ - #[DataProvider('provideData')] - public function testRule(array $filePaths, array $expectedErrorsWithLines): void - { - $this->analyse($filePaths, $expectedErrorsWithLines); - } - - /** - * @return Iterator>, mixed>> - */ - public static function provideData(): Iterator - { - yield [[ - __DIR__ . '/Fixture/SomeClassUsingTrait.php', - __DIR__ . '/Fixture/TraitWithRequireAttribute.php', - __DIR__ . '/Fixture/TraitWithRequire.php', - ], [[NoRequiredOutsideClassRule::ERROR_MESSAGE, 9], [NoRequiredOutsideClassRule::ERROR_MESSAGE, 10]]]; - } - - protected function getRule(): Rule - { - return new NoRequiredOutsideClassRule(); - } -}