Rector 2.8 neue Features und Update erklärt

Von Roland Golla
0 Kommentar
Gemälde im Dalí Stil: Haus im Umbau mit Schild Rector 2.8, Workerinnen am Gerüst

Rector 2.8 ist ein Release, das ihr nicht seht, aber sofort spürt. Die Core Engine läuft deutlich schneller, auf PHP 8.3 sogar rund dreimal so schnell. Regeln liefern jetzt in einem einzigen Durchgang ein stabiles Ergebnis. Und das Regelwerk wird schlanker: Viele selten genutzte Regeln sind deprecated. Wir nutzen Rector täglich in Symfony und Sulu Projekten. Hier lest ihr, was die neue Version bringt und wie ihr sauber updatet. Den Gesamtüberblick findet ihr in unserem Glossar zu Rector PHP.

PHP Update mit Rector geplant?

Wir heben euer Projekt mit eurem Team auf aktuelle PHP und Symfony Versionen. Zuerst bauen wir das Netz aus PHPStan, PHPUnit und Cypress E2E Tests, dann lassen wir Rector Schritt für Schritt laufen.

Rector 2.8 neue Features im Überblick

NeuerungWas sich ändertWas ihr davon habt
Schnellere Core Enginerund 26 Prozent schneller, etwa 8 Prozent weniger Speicherkürzere Läufe lokal und in der CI
PHPStan Turbonative Parsing Extension in den Workern ab PHP 8.3rund dreimal so schnell ohne Setup
Regeln in einem DurchgangRegeln laufen idempotent bis zum Fixpunktein zweiter Lauf bringt kein neues Diff
CPU Quota von cgroupsWorker Anzahl passt sich dem Container ankeine überlasteten CI Runner
list-rules –alllistet jede Regel aus Kern und allen rector Paketenschneller Überblick über verfügbare Regeln
ExplicitNullableObjectInstanceRectorersetzt vier ältere instanceof Regelneine Regel statt vier
Schlankeres Regelwerkviele Nischenregeln deprecated, Naming Set inklusiveweniger Überraschungen im Diff

Wie schnell ist Rector 2.8

Die Maintainer haben Rector auf der eigenen Codebasis gemessen, die Zahlen stehen in den Release Notes zu Rector 2.8. Version 2.7.0 brauchte für die Core Engine 32 Sekunden bei 351 MB Speicher. Version 2.8.0 schafft es in 23,6 Sekunden bei 324 MB. Mit PHPStan Turbo auf PHP 8.3 und neuer sind es etwa 10 Sekunden.

VersionLaufzeit Core EngineSpeicher Spitze
Rector 2.7.032,0 Sekunden351 MB
Rector 2.8.023,6 Sekunden324 MB
Rector 2.8.0 mit PHPStan Turbo ab PHP 8.3etwa 10 Sekundenetwa 317 MB

Woher kommt das Tempo? Hunderte Regeln prüfen jetzt zuerst günstige Bedingungen wie Namen und Struktur, bevor sie teure Reflection und Typabfragen starten. Konfigurierbare Regeln suchen per Schlüssel statt jede Konfiguration für jeden Knoten durchzugehen. Kurze Namen und ungenutzte Imports löst Rector in einem einzigen Durchlauf durch den Syntaxbaum. Wie dieser Baum funktioniert, erklärt unser Glossar zum Abstract Syntax Tree.

PHPStan Turbo kennt ihr vielleicht schon aus unserem Artikel zum PHPStan 2.3 Update. Rector 2.8 setzt PHPStan 2.3 voraus und nutzt Turbo direkt in den parallelen Workern. Ihr müsst dafür nichts installieren. Der Gewinn wächst mit der Zahl der Kerne. Auf einem CI Runner mit vielen Kernen ist der Unterschied also größer als auf einem kleinen Laptop. Hintergründe zu Turbo stehen im Release Artikel zu PHPStan 2.3.

Rector Regeln laufen jetzt idempotent

Bisher kannte Rector einen Schutz gegen Regeln, die Knoten immer wieder umbauen. In 2.8 fällt dieser Schutz weg. Die Engine lässt die Regeln laufen, bis sich nichts mehr ändert. Tests stellen sicher, dass jede Regel idempotent ist. Ändert eine Regel eine Datei, kommt dasselbe heraus, egal ob sie einmal oder zehnmal läuft.

Das klingt nach Detail, ist aber für die Pipeline wichtig. Ein Dry Run als Gate ist nur dann fair, wenn er auf sauberem Code wirklich nichts meldet. Genau das garantiert Rector jetzt. Wie wir solche Gates aufbauen, zeigt Quality Gates in der Pipeline.

vendor/bin/rector process --dry-run

Rector in Docker und CI mit CPU Quota

Im Parallelbetrieb hat Rector die Zahl der Worker bisher an den Kernen des Hosts ausgerichtet. In einem Container mit begrenzter CPU Quota startete Rector dann mehr Worker, als wirklich Rechenzeit da war. Rector 2.8 liest die cgroup Quota aus und passt die Worker an. Gerade auf geteilten GitLab oder GitHub Runnern läuft der Job dadurch ruhiger.

Schon in 2.7 kam eine Verbesserung für die CI dazu: Der Datei Cache arbeitet mit projektrelativen Pfaden. Ein Cache übersteht damit einen frischen Checkout in einem anderen Verzeichnis. Speichert den Cache Ordner zwischen den Läufen, dann prüft Rector nur geänderte Dateien. Den kompletten Aufbau mit Docker, Staging und Preview URLs beschreibt unsere CI CD Pipeline.

Alle Rector Regeln auflisten mit list-rules

Der Befehl list-rules war schon auf dem Weg nach draußen. In 2.8 ist er zurück und nicht mehr deprecated. Neu ist die Option --all. Sie zeigt jede Regel aus dem Kern und aus allen rector Paketen, also auch für Symfony, Doctrine, PHPUnit und Downgrades.

vendor/bin/rector list-rules --all

Das hilft, wenn ihr eine einzelne Regel mit --only laufen lassen wollt. So teilt ihr große Umbauten in kleine Commits, die sich gut reviewen lassen.

Diese Rector Regeln sind deprecated

Das Ziel der Maintainer ist ein kleineres Set an Regeln, auf die man sich im Alltag verlassen kann. Viele Regeln, die in keinem Set stecken und kaum genutzt werden, sind deshalb deprecated. Sie laufen weiter, geben aber eine Warnung aus. Mit dem nächsten Major Release fliegen sie raus. Die wichtigsten Gruppen:

  • Naming: das komplette Naming Set und Regeln wie RenameVariableToMatchNewTypeRector oder RenamePropertyToMatchTypeRector
  • Transform: konfigurierbare Regeln wie FuncCallToStaticCallRector, MethodCallToStaticCallRector oder StringToClassConstantRector
  • TypeDeclaration: DeclareStrictTypesRector zugunsten von SafeDeclareStrictTypesRector, dazu AddPropertyTypeDeclarationRector
  • CodeQuality und DeadCode: unter anderem SwitchTrueToMatchRector, CompleteDynamicPropertiesRector und RemoveDeadReturnRector

Komplett entfernt sind die Befehle custom-rule und setup-ci sowie die alten Methoden withPhp53Sets() bis withPhp74Sets(). Wer sie noch in der rector.php nutzt, stellt auf withPhpSets() mit Zielversion um:

return RectorConfig::configure()
    ->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
    ->withPhpSets(php84: true)
    ->withRules([
        // statt DeclareStrictTypesRector
        SafeDeclareStrictTypesRector::class,
    ]);

Was Rector 2.7 schon mitgebracht hat

Wer von 2.6 kommt, bekommt auch die Neuerungen aus 2.7 mit. Dazu gehören neue Regeln wie TernaryToNullsafeCoalesceRector und ConstructorReadonlyAssignToDefaultRector. Beim Import von Namen spart Rector auf großen Projekten bis zu rund 24 Prozent CPU Instruktionen. Hängende Worker werden beendet, und Dateien gehen nicht mehr verloren, wenn ein Worker neu startet. rector-doctrine bekommt Regeln für die Sortierrichtung im QueryBuilder und im OrderBy Attribut. Alle Details stehen in den Release Notes zu Rector 2.7.

Rector auf 2.8 updaten in fünf Schritten

composer update rector/rector --with-all-dependencies
  1. PHP Version prüfen: Turbo greift erst ab PHP 8.3. Prüft lokal, im Docker Image und im CI Runner.
  2. Dry Run starten: Lest die Warnungen zu deprecated Regeln, bevor ihr irgendwas schreibt.
  3. Konfiguration aufräumen: withPhp53Sets() bis withPhp74Sets() ersetzen, deprecated Regeln tauschen oder entfernen.
  4. Cache in der Pipeline halten: Den Cache Ordner zwischen den Läufen speichern.
  5. Testen: PHPStan, PHPUnit und ein E2E Durchlauf nach jedem Rector Lauf.

Viele Teams nutzen Rector vor allem für Framework Updates. Wie das für Symfony aussieht, zeigt unser Symfony Upgrade mit Rector auf 7.4 und 8. rector-symfony bringt in 2.8 schon erste Regeln für Symfony 8.2 mit. Nach Rector räumt Easy Coding Standard die Formatierung auf.

Rector, KI Coding und Quality Gates

Coding Agents schreiben schnell, aber selten im Stil eures Projekts. Rector holt den Code zurück auf eure Linie. Bei uns gilt eine feste Reihenfolge: erst PHPUnit und PHPStan, dann Rector und das eigentliche Aufräumen. Jede Änderung geht durch dieselben Gates, egal ob Mensch oder Agent sie geschrieben hat. Weil Rector 2.8 idempotent arbeitet und schneller läuft, passt es noch besser als fester Schritt hinter jedem Agenten Lauf. Die Regeln dafür liefern unsere NCA PHP AI Coding Guidelines. Welche Werkzeuge außer Rector in den Werkzeugkasten gehören, zeigt PHP Refactoring Tools, die 10 besten Werkzeuge.

Fazit

Rector 2.8 bringt kaum neue Regeln, aber es macht das Werkzeug erwachsener. Schneller, sparsamer, verlässlicher im Ergebnis und mit einem Regelwerk, das sich auf den Alltag konzentriert. Für Teams mit Rector in der Pipeline ist das Update ein klarer Gewinn. Plant etwas Zeit ein, um deprecated Regeln aus der Konfiguration zu holen. Dann läuft das nächste Major Release ohne Überraschung.

Häufige Fragen zu Rector 2.8

Was ist 2026 neu in Rector 2.8?

Rector 2.8 macht die Core Engine rund 26 Prozent schneller und nutzt ab PHP 8.3 PHPStan Turbo. Regeln laufen idempotent in einem Durchgang, die Worker beachten die CPU Quota im Container und list-rules zeigt mit –all jede Regel. Viele Nischenregeln sind deprecated.

Wie schnell ist Rector 2.8 im Jahr 2026?

Auf der eigenen Codebasis braucht die Core Engine 23,6 statt 32 Sekunden. Mit PHPStan Turbo auf PHP 8.3 und neuer sind es etwa 10 Sekunden, also rund dreimal so schnell wie Rector 2.7. Der Gewinn wächst mit der Zahl der Kerne.

Muss ich PHPStan Turbo 2026 für Rector installieren?

Nein. Rector 2.8 setzt PHPStan 2.3 voraus, die Turbo Extension liegt im Paket phpstan/phpstan. Die parallelen Worker nutzen sie automatisch, sobald PHP 8.3 oder neuer läuft.

Welche Rector Regeln sind 2026 deprecated?

Unter anderem das Naming Set, SwitchTrueToMatchRector, DeclareStrictTypesRector zugunsten von SafeDeclareStrictTypesRector und viele Transform Regeln. Sie laufen weiter, geben aber eine Warnung aus und werden im nächsten Major Release entfernt.

Ist das Update auf Rector 2.8 im Jahr 2026 riskant?

Kaum, wenn ihr mit einem Dry Run startet. Entfernt wurden vor allem alte Konfigurationsmethoden wie withPhp74Sets() und die Befehle custom-rule und setup-ci. Deprecated Regeln laufen weiter. Sichert das Update wie jeden Rector Lauf mit PHPStan und Tests ab.

Rector in eurem Projekt mit Never Code Alone

Wir heben Rector, PHPStan und PHPUnit in eurem Projekt, räumen die Konfiguration auf und bauen Rector als Gate in eure Pipeline. Kostenloses Kennenlernen, ehrliche Aufwandsschätzung, minutengenaue Abrechnung.

0 Kommentar

Tutorials und Top Posts

Gib uns Feedback

Diese Seite benutzt Cookies. Ein Akzeptieren hilft uns die Seite zu verbessern. Ok Mehr dazu