File tree Expand file tree Collapse file tree 4 files changed +65
-0
lines changed
Rules/Symfony/ConfigClosure Expand file tree Collapse file tree 4 files changed +65
-0
lines changed Original file line number Diff line number Diff line change @@ -1526,6 +1526,17 @@ return static function (ContainerConfigurator $configurator): void {
15261526
15271527<br>
15281528
1529+ # ## NoBundleResourceConfigRule
1530+
1531+ Avoid using configs in `*Bundle/Resources` directory. Move them to `/config` directory instead
1532+
1533+ ` ` ` yaml
1534+ rules:
1535+ - Symplify\P HPStanRules\R ules\S ymfony\C onfigClosure\N oBundleResourceConfigRule
1536+ ` ` `
1537+
1538+ <br>
1539+
15291540# ## NoRoutingPrefixRule
15301541
15311542Avoid global route prefixing. Use single place for paths in @Route/#[Route] and improve static analysis instead.
Original file line number Diff line number Diff line change 11rules :
22 - Symplify\PHPStanRules\Rules\Symfony\ConfigClosure\ServicesExcludedDirectoryMustExistRule
3+ - Symplify\PHPStanRules\Rules\Symfony\ConfigClosure\NoBundleResourceConfigRule
Original file line number Diff line number Diff line change @@ -43,4 +43,6 @@ final class SymfonyRuleIdentifier
4343 public const REQUIRE_ROUTE_NAME_TO_GENERATE_CONTROLLER_ROUTE = 'symfony.requireRouteNameToGenerateControllerRoute ' ;
4444
4545 public const SERVICES_EXCLUDED_DIRECTORY_MUST_EXIST = 'symfony.servicesExcludedDirectoryMustExist ' ;
46+
47+ public const NO_BUNDLE_RESOURCE_CONFIG = 'symfony.noBundleResourceConfig ' ;
4648}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Symplify \PHPStanRules \Rules \Symfony \ConfigClosure ;
6+
7+ use PhpParser \Node ;
8+ use PhpParser \Node \Expr \Closure ;
9+ use PHPStan \Analyser \Scope ;
10+ use PHPStan \Rules \IdentifierRuleError ;
11+ use PHPStan \Rules \Rule ;
12+ use PHPStan \Rules \RuleErrorBuilder ;
13+ use Symplify \PHPStanRules \Enum \SymfonyRuleIdentifier ;
14+ use Symplify \PHPStanRules \Symfony \NodeAnalyzer \SymfonyClosureDetector ;
15+
16+ /**
17+ * @implements Rule<Closure>
18+ */
19+ final class NoBundleResourceConfigRule implements Rule
20+ {
21+ /**
22+ * @var string
23+ */
24+ private const ERROR_MESSAGE = 'Avoid using configs in Bundle/Resources directory. Move them to "/config" directory instead ' ;
25+
26+ public function getNodeType (): string
27+ {
28+ return Closure::class;
29+ }
30+
31+ /**
32+ * @param Closure $node
33+ * @return IdentifierRuleError[]
34+ */
35+ public function processNode (Node $ node , Scope $ scope ): array
36+ {
37+ if (! SymfonyClosureDetector::detect ($ node )) {
38+ return [];
39+ }
40+
41+ if (! str_contains ($ scope ->getFile (), 'Resources/config ' )) {
42+ return [];
43+ }
44+
45+ $ identifierRuleError = RuleErrorBuilder::message (self ::ERROR_MESSAGE )
46+ ->identifier (SymfonyRuleIdentifier::NO_BUNDLE_RESOURCE_CONFIG )
47+ ->build ();
48+
49+ return [$ identifierRuleError ];
50+ }
51+ }
You can’t perform that action at this time.
0 commit comments