Rector im MyOOS Projekt

MyOOS hat einen Fehler, oder tut nicht das, was Ihr erwartet? Derartige "Unanehmlichkeiten" bitte hier.
Gesperrt
r23
Beiträge: 2696
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Rector im MyOOS Projekt

Beitrag von r23 »

Hallo,

mit dem letzten Release hat Rector Einzug in unser Projekt gehalten. Ich bin etwas ausführlicher in meinem Blogbeitrag https://blog.myoos.de/es-ist-freitag-ab ... on-2-5-62/ darauf eingegangen.

Hinweis
Dieses Tutorial ist als praktischer Leitfaden für MyOOS Entwickler gedacht und behandelt keine theoretischen Hintergründe.

Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie. Der hier gezeigte Weg ist nicht der einzige, es ist lediglich, der, den ich bevorzuge.

Was ist Rector
Rector ist ein Open-Source-Tool, das sofortige Upgrades und Refactoring von PHP-Code durchführt. Es kann dir helfen, deinen Code auf dem neuesten Stand zu halten, veraltete oder veraltete Konstrukte zu ersetzen, die Lesbarkeit und Leistung zu verbessern und Fehler zu vermeiden.


Problem.
Rector wandelt auch Arrays in String um, was zu Warnungen führen kann
hier zum Beispiel Warning: Array to string conversion in

https://github.com/r23/MyOOS/commit/885 ... fc3dd63841

Code: Alles auswählen

     // Pass through each argument that is passed to the function
     foreach (func_get_args() as $ourvar) {
-        $ourvar = preg_replace($search, $replace, $ourvar);
+        $ourvar = preg_replace($search, (string) $replace, (string) $ourvar);

         // Clean up the string further with oos_sanitize_string()
         $ourlet = oos_sanitize_string($ourvar);

Um Rector anzuweisen, eine bestimmte Zeile zu ignorieren, können wir einen Kommentar mit @noRector oder @noRector\SomeRectorClass hinzufügen.

Leider funktionierte dies bei mir nicht. Nach einer Stunde Versuche und vergebliche Suche einer Anleitung. Habe ich eine

*_norector.php Datei erstellt. Der Inhalt dieser Datei wird von Rector ignoriert.


Du kannst eine Datei oder ein Verzeichnis in der rector.php-Datei überspringen, indem du die skip()-Methode verwendest. Zum Beispiel:

Code: Alles auswählen

use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\SetList;

return static function (RectorConfig $rectorConfig): void {
    // überspringe eine Datei
    $rectorConfig->skip('src/SomeFile.php');

    // überspringe ein Verzeichnis
    $rectorConfig->skip('src/SomeDirectory/*');

    // überspringe eine Regel für eine Datei oder ein Verzeichnis
    $rectorConfig->skip(Rector\SomeRectorClass::class, 'src/SomeFile.php');
    $rectorConfig->skip(Rector\SomeRectorClass::class, 'src/SomeDirectory/*');
};


Du kannst auch die Regel in Ihrer rector.php-Datei deaktivieren, indem du sie aus dem Set entfernst oder überschreibst2. Zum Beispiel:
NullToStrictStringFuncCallArgRector

Code: Alles auswählen

use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\SetList;

return static function (RectorConfig $rectorConfig): void {
    // entferne die Regel aus dem Set
    $rectorConfig->remove(Rector\NullToStrictStringFuncCallArgRector::class);

    // oder überschreibe die Regel mit einer leeren Konfiguration
    $rectorConfig->set(Rector\NullToStrictStringFuncCallArgRector::class, []);
};

Beste Grüße

Ralf
Gesperrt