diff --git a/composer.json b/composer.json index b98f1e1..74ab5eb 100644 --- a/composer.json +++ b/composer.json @@ -17,10 +17,12 @@ "license": [ "GPL-3.0-or-later" ], - "autoload": { - "classmap": ["inc"] - }, - "type": "wordpress-plugin", + "autoload": { + "classmap": [ + "inc" + ] + }, + "type": "wordpress-plugin", "require": { "php": ">=7.4.1", "automattic/jetpack-autoloader": "^5.0.0", @@ -62,9 +64,9 @@ "phpstan/extension-installer": "^1.1" }, "config": { - "platform": { - "php": "7.4.1" - }, + "platform": { + "php": "7.4.1" + }, "allow-plugins": { "composer/installers": true, "dealerdirect/phpcodesniffer-composer-installer": true, @@ -95,7 +97,9 @@ }, "extra": { "installer-paths": { - "vendor/woocommerce/{$name}/": ["type:wordpress-plugin"] + "vendor/woocommerce/{$name}/": [ + "type:wordpress-plugin" + ] }, "patches": { "jasny/sso": [ @@ -107,7 +111,13 @@ ] } }, - "scripts": { - "post-update-cmd": "cd vendor/mpdf/mpdf/ttfonts && rm -f AboriginalSansREGULAR.ttf Aegean.otf Aegyptus.otf Akkadian.otf ayar.ttf damase_v.2.ttf DBSILBR.ttf DejaVuSerif.ttf Dhyana-Regular.ttf DejaVuSansMono-Oblique.ttf DejaVuSerif-BoldItalic.ttf DhyanaOFL.txt DejaVuSerifCondensed-BoldItalic.ttf DejaVuSansMono-Bold.ttf DejaVuSerif-Italic.ttf DejaVuSansMono.ttf DejaVuSansMono-BoldOblique.ttf DejaVuSerif-Bold.ttf Dhyana-Bold.ttf DejaVuSerifCondensed-Italic.ttf DejaVuSansCondensed-BoldOblique.ttf DejaVuSansCondensed-Oblique.ttf DejaVuSans-Oblique.ttf DejaVuSans-BoldOblique.ttf DejaVuSans-Bold.ttf DejaVuSans.ttf FreeMonoBoldOblique.ttf FreeMonoOblique.ttf FreeSans.ttf FreeSansBold.ttf FreeSansBoldOblique.ttf FreeSansOblique.ttf FreeSerif.ttf FreeSerifBold.ttf FreeSerifBoldItalic.ttf FreeSerifItalic.ttf Garuda.ttf Garuda-Bold.ttf Garuda-BoldOblique.ttf Garuda-Oblique.ttf GNUFreeFontinfo.txt Jomolhari.ttf Jomolhari-OFL.txt kaputaunicode.ttf KhmerOFL.txt KhmerOS.ttf lannaalif-v1-03.ttf 'Lateef font OFL.txt' LateefRegOT.ttf Lohit-Kannada.ttf LohitKannadaOFL.txt ocrb10.ttf ocrbinfo.txt Padauk-book.ttf Pothana2000.ttf Quivira.otf Sun-ExtA.ttf Sun-ExtB.ttf SundaneseUnicode-1.0.5.ttf SyrCOMEdessa.otf SyrCOMEdessa_license.txt TaameyDavidCLM-LICENSE.txt TaameyDavidCLM-Medium.ttf TaiHeritagePro.ttf Tharlon-Regular.ttf TharlonOFL.txt UnBatang_0613.ttf Uthman.otf 'XB Riyaz.ttf' 'XB RiyazBd.ttf' 'XB RiyazBdIt.ttf' 'XB RiyazIt.ttf' 'XW Zar Font Info.txt' ZawgyiOne.ttf Abyssinica_SIL.ttf" - } -} + "scripts": { + "post-update-cmd": "cd vendor/mpdf/mpdf/ttfonts && rm -f AboriginalSansREGULAR.ttf Aegean.otf Aegyptus.otf Akkadian.otf ayar.ttf damase_v.2.ttf DBSILBR.ttf DejaVuSerif.ttf Dhyana-Regular.ttf DejaVuSansMono-Oblique.ttf DejaVuSerif-BoldItalic.ttf DhyanaOFL.txt DejaVuSerifCondensed-BoldItalic.ttf DejaVuSansMono-Bold.ttf DejaVuSerif-Italic.ttf DejaVuSansMono.ttf DejaVuSansMono-BoldOblique.ttf DejaVuSerif-Bold.ttf Dhyana-Bold.ttf DejaVuSerifCondensed-Italic.ttf DejaVuSansCondensed-BoldOblique.ttf DejaVuSansCondensed-Oblique.ttf DejaVuSans-Oblique.ttf DejaVuSans-BoldOblique.ttf DejaVuSans-Bold.ttf DejaVuSans.ttf FreeMonoBoldOblique.ttf FreeMonoOblique.ttf FreeSans.ttf FreeSansBold.ttf FreeSansBoldOblique.ttf FreeSansOblique.ttf FreeSerif.ttf FreeSerifBold.ttf FreeSerifBoldItalic.ttf FreeSerifItalic.ttf Garuda.ttf Garuda-Bold.ttf Garuda-BoldOblique.ttf Garuda-Oblique.ttf GNUFreeFontinfo.txt Jomolhari.ttf Jomolhari-OFL.txt kaputaunicode.ttf KhmerOFL.txt KhmerOS.ttf lannaalif-v1-03.ttf 'Lateef font OFL.txt' LateefRegOT.ttf Lohit-Kannada.ttf LohitKannadaOFL.txt ocrb10.ttf ocrbinfo.txt Padauk-book.ttf Pothana2000.ttf Quivira.otf Sun-ExtA.ttf Sun-ExtB.ttf SundaneseUnicode-1.0.5.ttf SyrCOMEdessa.otf SyrCOMEdessa_license.txt TaameyDavidCLM-LICENSE.txt TaameyDavidCLM-Medium.ttf TaiHeritagePro.ttf Tharlon-Regular.ttf TharlonOFL.txt UnBatang_0613.ttf Uthman.otf 'XB Riyaz.ttf' 'XB RiyazBd.ttf' 'XB RiyazBdIt.ttf' 'XB RiyazIt.ttf' 'XW Zar Font Info.txt' ZawgyiOne.ttf Abyssinica_SIL.ttf" + }, + "autoload-dev": { + "psr-4": { + "Utils\\Rector\\": "utils/rector/src", + "Utils\\Rector\\Tests\\": "utils/rector/tests" + } + } +} \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 6cf1406..a3dcd47 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,18 +1,14 @@ - - - - - - - ./tests/ - - + + + + + + + ./tests/ + + + utils/rector/tests + + diff --git a/rector.php b/rector.php index 573ff7a..b313c35 100644 --- a/rector.php +++ b/rector.php @@ -19,8 +19,10 @@ return RectorConfig::configure() ->withSkipPath(__DIR__ . '/vendor',) ->withImportNames(false) ->withPhpSets() + ->withCodeQualityLevel(15) + ->withCodingStyleLevel(5) ->withRules( [ - AddVoidReturnTypeWhereNoReturnRector::class, + \Utils\Rector\Rector\YodaConditionsRector::class, ] ); diff --git a/utils/rector/src/Rector/YodaConditionsRector.php b/utils/rector/src/Rector/YodaConditionsRector.php new file mode 100644 index 0000000..d8406da --- /dev/null +++ b/utils/rector/src/Rector/YodaConditionsRector.php @@ -0,0 +1,44 @@ +> + */ + public function getNodeTypes(): array + { + return [Equal::class, NotEqual::class, Identical::class, NotIdentical::class]; + } + + /** + * @param \PhpParser\Node\Stmt\Class_ $node + */ + public function refactor(Node $node): ?Node + { + // Ensure the left operand is not a constant + if ($node->left instanceof Node\Expr\Variable && (! $node->right instanceof Node\Expr\Variable)) { + // Swap the left and right operands + $this->mirrorComments($node->right, $node->left); + [$node->left, $node->right] = [$node->right, $node->left]; + } + return $node; + } +} diff --git a/utils/rector/tests/Rector/YodaConditionsRector/Fixture/some_class.php.inc b/utils/rector/tests/Rector/YodaConditionsRector/Fixture/some_class.php.inc new file mode 100644 index 0000000..e7956ba --- /dev/null +++ b/utils/rector/tests/Rector/YodaConditionsRector/Fixture/some_class.php.inc @@ -0,0 +1,49 @@ + +----- + diff --git a/utils/rector/tests/Rector/YodaConditionsRector/YodaConditionsRectorTest.php b/utils/rector/tests/Rector/YodaConditionsRector/YodaConditionsRectorTest.php new file mode 100644 index 0000000..2ffb53d --- /dev/null +++ b/utils/rector/tests/Rector/YodaConditionsRector/YodaConditionsRectorTest.php @@ -0,0 +1,28 @@ +doTestFile($filePath); + } + + public static function provideData(): \Iterator + { + return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); + } + + public function provideConfigFilePath(): string + { + return __DIR__ . '/config/configured_rule.php'; + } +} diff --git a/utils/rector/tests/Rector/YodaConditionsRector/config/configured_rule.php b/utils/rector/tests/Rector/YodaConditionsRector/config/configured_rule.php new file mode 100644 index 0000000..ae2e81f --- /dev/null +++ b/utils/rector/tests/Rector/YodaConditionsRector/config/configured_rule.php @@ -0,0 +1,9 @@ +rule(\Utils\Rector\Rector\YodaConditionsRector::class); +};