From 300798554607c762598ef9309ceb455fbaaa923b Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Wed, 22 Apr 2020 22:15:08 +0200 Subject: [PATCH 1/2] composer: remove --debug from rector-ci run --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 8145bde2889..0266ad85f96 100644 --- a/composer.json +++ b/composer.json @@ -267,7 +267,7 @@ "bin/rector dump-rectors > docs/AllRectorsOverview.md", "bin/rector dump-nodes > docs/NodesOverview.md" ], - "rector-ci": "bin/rector process --config rector-ci.yaml --debug --dry-run", + "rector-ci": "bin/rector process --config rector-ci.yaml --dry-run", "rector": "bin/rector process --config rector-ci.yaml --ansi" }, "config": { From 9d83fb64c3dc55d8b8e5f8b4ca9681637e3d8acf Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Wed, 22 Apr 2020 22:15:19 +0200 Subject: [PATCH 2/2] [Restoration] Add RemoveFinalFromEntityRector --- docs/AllRectorsOverview.md | 23 +++++- .../Class_/RemoveFinalFromEntityRector.php | 73 +++++++++++++++++++ .../Fixture/fixture.php.inc | 29 ++++++++ .../RemoveFinalFromEntityRectorTest.php | 30 ++++++++ .../AbstractRector/AbstractRectorTrait.php | 5 ++ 5 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 rules/restoration/src/Rector/Class_/RemoveFinalFromEntityRector.php create mode 100644 rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/Fixture/fixture.php.inc create mode 100644 rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/RemoveFinalFromEntityRectorTest.php diff --git a/docs/AllRectorsOverview.md b/docs/AllRectorsOverview.md index 5372c597c07..7f75848f27c 100644 --- a/docs/AllRectorsOverview.md +++ b/docs/AllRectorsOverview.md @@ -1,4 +1,4 @@ -# All 498 Rectors Overview +# All 499 Rectors Overview - [Projects](#projects) - [General](#general) @@ -8880,6 +8880,27 @@ Convert missing class reference to string
+### `RemoveFinalFromEntityRector` + +- class: [`Rector\Restoration\Rector\Class_\RemoveFinalFromEntityRector`](/../master/rules/restoration/src/Rector/Class_/RemoveFinalFromEntityRector.php) +- [test fixtures](/../master/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/Fixture) + +Remove final from Doctrine entities + +```diff + use Doctrine\ORM\Mapping as ORM; + + /** + * @ORM\Entity + */ +-final class SomeClass ++class SomeClass + { + } +``` + +
+ ## SOLID ### `ChangeIfElseValueAssignToEarlyReturnRector` diff --git a/rules/restoration/src/Rector/Class_/RemoveFinalFromEntityRector.php b/rules/restoration/src/Rector/Class_/RemoveFinalFromEntityRector.php new file mode 100644 index 00000000000..0e0b1e09f15 --- /dev/null +++ b/rules/restoration/src/Rector/Class_/RemoveFinalFromEntityRector.php @@ -0,0 +1,73 @@ +isDoctrineEntityClass($node)) { + return null; + } + + if (! $node->isFinal()) { + return null; + } + + $this->removeFinal($node); + + return $node; + } +} diff --git a/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/Fixture/fixture.php.inc b/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/Fixture/fixture.php.inc new file mode 100644 index 00000000000..47bd269382e --- /dev/null +++ b/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/Fixture/fixture.php.inc @@ -0,0 +1,29 @@ + +----- + diff --git a/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/RemoveFinalFromEntityRectorTest.php b/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/RemoveFinalFromEntityRectorTest.php new file mode 100644 index 00000000000..dced6dc23dd --- /dev/null +++ b/rules/restoration/tests/Rector/Class_/RemoveFinalFromEntityRector/RemoveFinalFromEntityRectorTest.php @@ -0,0 +1,30 @@ +doTestFile($file); + } + + public function provideData(): Iterator + { + return $this->yieldFilesFromDirectory(__DIR__ . '/Fixture'); + } + + protected function getRectorClass(): string + { + return RemoveFinalFromEntityRector::class; + } +} diff --git a/src/Rector/AbstractRector/AbstractRectorTrait.php b/src/Rector/AbstractRector/AbstractRectorTrait.php index af4732aeeed..36cc18c3f82 100644 --- a/src/Rector/AbstractRector/AbstractRectorTrait.php +++ b/src/Rector/AbstractRector/AbstractRectorTrait.php @@ -44,4 +44,9 @@ trait AbstractRectorTrait return ! Strings::contains($name, 'AnonymousClass'); } + + protected function removeFinal(Class_ $node): void + { + $node->flags -= Class_::MODIFIER_FINAL; + } }