Skip to content

Commit 4bbdf3b

Browse files
committed
"Refactor Configuration methods to add PHPStan annotations and simplify ignore rules for NodeBuilder-related false positives."
1 parent 0d644cd commit 4bbdf3b

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

phpstan.neon

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,13 @@ parameters:
99
paths:
1010
- 'src/TwigExtra/src'
1111
- 'src/TwigHooks/src'
12+
13+
ignoreErrors:
14+
# Symfony Config component relies on magic methods in NodeBuilder.
15+
# PHPStan struggles to resolve these methods on the builder class when complex generics are involved,
16+
# resulting in false positive "unknown class" errors.
17+
-
18+
message: '#Call to method \w+Node\(\) on an unknown class .*NodeBuilder.*#'
19+
paths:
20+
- 'src/TwigHooks/src/DependencyInjection/Configuration.php'
21+
- 'src/TwigExtra/src/Symfony/DependencyInjection/Configuration.php'

src/TwigExtra/src/Symfony/DependencyInjection/Configuration.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,34 @@
1414
namespace Sylius\TwigExtra\Symfony\DependencyInjection;
1515

1616
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
17+
use Symfony\Component\Config\Definition\Builder\NodeParentInterface;
1718
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
1819
use Symfony\Component\Config\Definition\ConfigurationInterface;
1920

2021
final class Configuration implements ConfigurationInterface
2122
{
23+
/**
24+
* @phpstan-return TreeBuilder<'array'>
25+
*/
2226
public function getConfigTreeBuilder(): TreeBuilder
2327
{
2428
$treeBuilder = new TreeBuilder('sylius_twig_extra');
2529

30+
/**
31+
* @var ArrayNodeDefinition $rootNode
32+
* @phpstan-var ArrayNodeDefinition<NodeParentInterface|null> $rootNode
33+
*/
2634
$rootNode = $treeBuilder->getRootNode();
2735

2836
$this->addTwigUxConfiguration($rootNode);
2937

3038
return $treeBuilder;
3139
}
3240

41+
/**
42+
* @param ArrayNodeDefinition $rootNode
43+
* @phpstan-param ArrayNodeDefinition<NodeParentInterface|null> $rootNode
44+
*/
3345
private function addTwigUxConfiguration(ArrayNodeDefinition $rootNode): void
3446
{
3547
$rootNode

src/TwigHooks/src/DependencyInjection/Configuration.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,23 @@
1717
use Sylius\TwigHooks\Hookable\HookableComponent;
1818
use Sylius\TwigHooks\Hookable\HookableTemplate;
1919
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
20+
use Symfony\Component\Config\Definition\Builder\NodeParentInterface;
2021
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
2122
use Symfony\Component\Config\Definition\ConfigurationInterface;
2223

2324
final class Configuration implements ConfigurationInterface
2425
{
26+
/**
27+
* @phpstan-return TreeBuilder<'array'>
28+
*/
2529
public function getConfigTreeBuilder(): TreeBuilder
2630
{
2731
$treeBuilder = new TreeBuilder('sylius_twig_hooks');
2832

33+
/**
34+
* @var ArrayNodeDefinition $rootNode
35+
* @phpstan-var ArrayNodeDefinition<NodeParentInterface|null> $rootNode
36+
*/
2937
$rootNode = $treeBuilder->getRootNode();
3038

3139
$rootNode
@@ -41,6 +49,10 @@ public function getConfigTreeBuilder(): TreeBuilder
4149
return $treeBuilder;
4250
}
4351

52+
/**
53+
* @param ArrayNodeDefinition $rootNode
54+
* @phpstan-param ArrayNodeDefinition<NodeParentInterface|null> $rootNode
55+
*/
4456
private function addSupportedHookableTypesConfiguration(ArrayNodeDefinition $rootNode): void
4557
{
4658
$rootNode
@@ -58,6 +70,10 @@ private function addSupportedHookableTypesConfiguration(ArrayNodeDefinition $roo
5870
;
5971
}
6072

73+
/**
74+
* @param ArrayNodeDefinition $rootNode
75+
* @phpstan-param ArrayNodeDefinition<NodeParentInterface|null> $rootNode
76+
*/
6177
private function addHooksConfiguration(ArrayNodeDefinition $rootNode): void
6278
{
6379
$rootNode

0 commit comments

Comments
 (0)