„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Code-Refactoring beherrschen: Eine vollständige Anleitung zur Verwendung von Rector PHP

Code-Refactoring beherrschen: Eine vollständige Anleitung zur Verwendung von Rector PHP

Veröffentlicht am 30.08.2024
Durchsuche:677

Mastering Code Refactoring: A Complete Guide to Using Rector PHP
Foto von Matteo del Piano auf Unsplash

Einführung in Rector PHP

In der sich ständig weiterentwickelnden Welt der PHP-Entwicklung ist es von entscheidender Bedeutung, Ihre Codebasis sauber, aktuell und effizient zu halten. Hier kommt Rektor PHP ins Spiel. Wenn Sie sich gefragt haben, wie Sie Rector PHP verwenden, wie Sie es installieren oder was genau Rector PHP ist, ist diese umfassende Anleitung genau das Richtige für Sie. Wir führen Sie durch die Grundlagen, stellen ein detailliertes Rector PHP-Tutorial zur Verfügung und bieten Einblicke in PHP Rector und wie man es effektiv nutzt. Am Ende dieses Artikels werden Sie ein solides Verständnis von Rector PHP haben und wissen, wie es Ihren Entwicklungsworkflow verbessern kann.

Was ist Rector PHP?

Rector wurde im Jahr 2020 gestartet, erhielt jedoch erst 2024 die Version 1.0. Es handelt sich um ein Befehlszeilentool, das eine statische Analyse einer Codebasis durchführt. Aus dieser Analyse können Änderungen übernommen werden. Ich schätze, ein gutes Beispiel hierfür wäre, wenn Ihre Codebasis voller array()-Aufrufe wäre, obwohl dies heute als alte Praxis gilt und jetzt durch die kurze Array-Syntax [] ersetzt wird.

Es ist mühsam, eine Codebasis durchzugehen, um dies zu ersetzen. Wir könnten ein einfaches Such- und Ersetzungstool verwenden, aber was wäre, wenn ein Array() in einer Zeichenfolge oder in einem Kommentar enthalten wäre, der nicht geändert werden sollte? Jetzt müssen wir jede Instanz überprüfen, die wir ersetzen.

Diese Art von Problem ist es, was Rector hervorragend beherrscht. Stattdessen ist Rector in der Lage, sich den Code anzusehen und definitiv zu wissen, ob es sich um ein Array handelt, das ersetzt werden muss.

Sie fragen sich vielleicht, dass PHP CS Fixer dies auch kann, was stimmt. Aber Rector hat PHPStan auch unter der Haube im Einsatz, um nicht nur die Syntax zu erkennen, sondern auch Typen zu analysieren. Das bedeutet, dass Rector erkennen kann, wann eine Klasse eine bestimmte übergeordnete Klasse hat, wann eine Variable einen bestimmten Typ hat oder welchen Rückgabetyp eine Funktion erwartet. Dies gibt ihm einen weitaus größeren Spielraum für Massenänderungen an einer Codebasis.

So installieren Sie Rector PHP

Das mag für erfahrene PHP-Entwickler offensichtlich erscheinen, aber es gibt zwei primäre Möglichkeiten und es hängt wirklich davon ab, wie Sie Rector verwenden möchten.

Wenn Sie Rector als Teil der kontinuierlichen Integration verwenden möchten, ist es sinnvoll, Rector über Composer anders in Ihre Projekte zu installieren.

composer require --dev rector/rector

Wenn Sie jedoch mit Rector in einem oder mehreren Projekten experimentieren möchten, um Upgrades durchzuführen, ist es möglicherweise besser, Rector global zu installieren, indem Sie
verwenden.

composer global require rector/rector

Welchen Schritt Sie auch wählen, der nächste Schritt besteht darin, eine Konfiguration im Stammverzeichnis eines Projekts zu erstellen und alle Ordner einzuschließen, die den PHP-Code enthalten, den Sie aktualisieren möchten. Dazu gehört natürlich nicht der Vendor-Ordner, da wir ihn nicht ändern wollen.

So könnte eine Konfiguration beispielsweise für ein Laravel-Projekt aussehen:

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true);

PHP Rector: Wie man es effektiv nutzt

Wie im letzten Abschnitt kann die Verwendung von Rector dadurch bestimmt werden, wie Sie es verwenden möchten. Der Rektor nimmt Änderungen durch die Auswahl der Regeln vor. Dies ist dasselbe wie PHP CS Fixer. Diese Regeln erkennen das Problem und versuchen dann, das Problem zu beheben, das sie lösen sollen.

Wenn wir Rector im Rahmen einer kontinuierlichen Integration verwenden möchten, weil wir den gesamten Code bei der Entwicklung so optimal wie möglich nutzen möchten, verwenden wir möglicherweise nur einen bestimmten Satz von Regeln.

Rector verfügt über Regelwerke, die oft als Dead Code oder Code Quality bezeichnet werden und die Code entfernen bzw. verbessern und optimieren. Es ist von großem Vorteil, nur bei diesen Sets zu bleiben, da wir sicher sein können, dass sie die meiste Zeit funktionieren. Sie sollten sich jedoch unbedingt darüber im Klaren sein, dass die Art und Weise, wie Rector Code schreibt, niemals perfekt ist. Wenn Regeln geschrieben werden, decken sie oft die typischen Szenarien ab und übersehen möglicherweise einige Umstände, die in Ihrer Codebasis enthalten sind. Dies könnte zu fehlerhaftem Code führen.

Falls Sie Rector nutzen möchten, sollten Sie unbedingt Tests für Ihre Bewerbung schreiben lassen. Ohne sie kann Rector leicht zur Einführung von Fehlern führen, die Sie erst dann entdecken, wenn es sich um ein Problem handelt.

Eine weitere Sache, die Sie bei der Verwendung von Rector berücksichtigen sollten, ist die Verwendung eines Linting-Tools wie PHP CS Fixer. Rector berücksichtigt keine Leerzeichen, Leerzeichen und Zeilenumbrüche zwischen Methodenaufrufen und deren Argumenten usw. Die Verwendung eines Linting-Tools sollte die Codeformatierung auf dem erwarteten Standard halten, nachdem Rector seine Korrekturen angewendet hat.

Schritt-für-Schritt-Anleitung für Rector PHP

Jetzt haben wir Rector installiert und können es ausprobieren. Versuchen wir, eine Regel anzuwenden. Beginnen wir mit der Aktualisierung unserer zuvor erstellten Konfigurationsdatei.

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true)
    ->withRules([
        ListToArrayDestructRector::class,
    ]);

Im Fall dieser Konfiguration werden wir die Verwendung von Listen ersetzen, sodass wir stattdessen eine Array-Umstrukturierung verwenden. Die Änderungen, die wir voraussichtlich vornehmen würden, sind wie folgt:

-list($a, $b) = ['a', 'b'];
 [$a, $b] = ['a', 'b'];

Jetzt können wir diese Konfiguration testen, indem wir einen Probelauf von Rector durchführen.

rector --dry-run

Wenn alles erfolgreich war, sollten wir jetzt eine Ausgabe sehen, die einen Unterschied aller Änderungen an jeder Datei enthält, mit einer Liste der Regeln, die die Änderungen vorgenommen haben. Unsere Konfiguration listet nur eine Regel auf, daher wird nur eine Regel angewendet. Wenn jedoch weitere Regeln hinzugefügt werden, sehen wir hier eine Liste mit einer oder mehreren.

Mastering Code Refactoring: A Complete Guide to Using Rector PHP

Dies ist dann ein guter Zeitpunkt, um die Änderungen zu überprüfen und sicherzustellen, dass die Regel wie erwartet funktioniert. Sobald wir zufrieden sind, können wir Rector erneut kandidieren. Ohne das Probelauf-Flag werden Änderungen in die Dateien geschrieben.

rector

Nachdem es abgeschlossen ist, sollten wir unser bevorzugtes Linting-Tool ausführen und dann unsere Tests durchführen. Das ist es. Wir haben jetzt Rector verwendet.

Fazit: Steigern Sie Ihre PHP-Entwicklung mit Rector

Rector PHP ist ein leistungsstarkes Tool, das Ihren PHP-Entwicklungsworkflow erheblich verbessern kann, indem es das Code-Refactoring automatisiert und sicherstellt, dass Ihre Codebasis sauber und modern bleibt. Indem Sie verstehen, was Rector PHP ist, lernen, wie man es installiert und wie man es effektiv nutzt, können Sie seine Fähigkeiten nutzen, um Codeaktualisierungen zu optimieren, die Codequalität zu verbessern und das Risiko zu verringern, dass sich Code wie ein „Legacy“-Projekt anfühlt. Unabhängig davon, ob Sie Rector in Ihre Continuous-Integration-Pipeline integrieren oder es für groß angelegte Codebasis-Upgrades verwenden, ist Rector eine unverzichtbare Bereicherung für jeden PHP-Entwickler, der einen hohen Standard an Code-Exzellenz aufrechterhalten möchte.

Wenn Sie Ihr Wissen über Rector vertiefen möchten, empfehle ich Ihnen, zu https://getrector.com/ zu gehen.

Ich bin Peter Fox, ein Softwareentwickler in Großbritannien, der mit Laravel arbeitet. Vielen Dank, dass Sie meinen Artikel gelesen haben. Unter https://articles.peterfox.me gibt es noch viel mehr zu lesen. Ich bin jetzt auch auf GitHub sponserbar. Wenn Sie mich ermutigen möchten, weitere Artikel wie diesen zu schreiben, denken Sie bitte über eine kleine einmalige Spende nach.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/peter_fox/mastering-code-refactoring-a-complete-guide-to-using-rector-php-hp1?1 Bei Verstößen wenden Sie sich bitte an Study_golang@163 .com, um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3