From 33b120b2346119d88badbe38a142781fe7ae90c9 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 12 Oct 2024 23:26:12 +0700 Subject: [PATCH 1/4] [CodeQuality] Use existing PhpAttributeAnalyzer service instead of AttributeFinder from Doctrine package on DynamicDocBlockPropertyToNativePropertyRector --- .../DynamicDocBlockPropertyToNativePropertyRector.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/rules/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector.php b/rules/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector.php index 8aa13b19c7..e9859c2193 100644 --- a/rules/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector.php +++ b/rules/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector.php @@ -5,7 +5,6 @@ namespace Rector\CodeQuality\Rector\Class_; use PhpParser\Node; -use PhpParser\Node\Attribute; use PhpParser\Node\Expr; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; @@ -17,7 +16,7 @@ use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover; use Rector\CodeQuality\NodeFactory\TypedPropertyFactory; use Rector\Comments\NodeDocBlock\DocBlockUpdater; -use Rector\Doctrine\NodeAnalyzer\AttributeFinder; +use Rector\Php80\NodeAnalyzer\PhpAttributeAnalyzer; use Rector\PhpParser\Node\Value\ValueResolver; use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; use Rector\Rector\AbstractRector; @@ -33,7 +32,7 @@ final class DynamicDocBlockPropertyToNativePropertyRector extends AbstractRector implements MinPhpVersionInterface { public function __construct( - private readonly AttributeFinder $attributeFinder, + private readonly PhpAttributeAnalyzer $phpAttributeAnalyzer, private readonly PhpDocInfoFactory $phpDocInfoFactory, private readonly PhpDocTagRemover $phpDocTagRemover, private readonly DocBlockUpdater $docBlockUpdater, @@ -89,11 +88,7 @@ public function getNodeTypes(): array */ public function refactor(Node $node): ?Node { - $allowDynamicPropertiesAttribute = $this->attributeFinder->findAttributeByClass( - $node, - 'AllowDynamicProperties' - ); - if (! $allowDynamicPropertiesAttribute instanceof Attribute) { + if (! $this->phpAttributeAnalyzer->hasPhpAttribute($node, 'AllowDynamicProperties')) { return null; } From 3ea77ade26a4a18dcccf6af030a6b4a80800ad74 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 12 Oct 2024 23:28:55 +0700 Subject: [PATCH 2/4] add fixture --- ...o_allow_dynamic_properties_attribute.php.inc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc new file mode 100644 index 0000000000..bf3f14249a --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc @@ -0,0 +1,17 @@ +someDependency = new SomeDependency(); + } + + public function __get($name) + { + } +} From 2cd6efbd70f1eaf58262d22db0206b8f81880ceb Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 12 Oct 2024 23:29:36 +0700 Subject: [PATCH 3/4] add fixture --- .../Fixture/skip_no_allow_dynamic_properties_attribute.php.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc index bf3f14249a..2f59d29d83 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc @@ -4,6 +4,9 @@ namespace Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNative use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency; +/** + * @property SomeDependency $someDependency + */ final class SkipNoAllowDynamicPropertiesAttribute { public function run(): void From 23331c36da8453d5fb8e95d226d03e3a6ad712d1 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 12 Oct 2024 23:30:41 +0700 Subject: [PATCH 4/4] add fixture --- .../skip_no_allow_dynamic_properties_attribute.php.inc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc index 2f59d29d83..b00462d750 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/skip_no_allow_dynamic_properties_attribute.php.inc @@ -13,8 +13,4 @@ final class SkipNoAllowDynamicPropertiesAttribute { $this->someDependency = new SomeDependency(); } - - public function __get($name) - { - } }