J’ai relancé une passe avec Rector pour voir ce que ça donnait, en particulier sur l’aspect compatibilité avec les versions de PHP qu’on souhaite supporter, 7.4, 8.0, 8.1 et 8.2, pour la version 2.25 — sachant qu’on fera probablement l’impasse sur la 7.4 pour la 2.26, voire la 8.0 aussi, tant qu’à faire.
Ça m’a permis de faire quelques retouches à la marge et de trouver un bug dans du code peu utilisé !
Ma config Rector du moment :
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Core\ValueObject\PhpVersion;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Set\ValueObject\SetList;
use Rector\Set\ValueObject\DowngradeLevelSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([
__DIR__,
]);
// Example;
//
// PHP >= 7.4 and <= 8.2
// $rectorConfig->sets([SetList::PHP_82, LevelSetList::UP_TO_PHP_81]);
// parameter must be defined after import, to override imported param version
// $rectorConfig->phpVersion(PhpVersion::PHP_74);
//
// Code quality
// $rectorConfig->sets([SetList::CODE_QUALITY]);
$step = '74_82';
switch ($step) {
case '81_82':
// From PHP 8.1 up to PHP 8.2
$rectorConfig->sets([SetList::PHP_82, LevelSetList::UP_TO_PHP_81]);
$rectorConfig->phpVersion(PhpVersion::PHP_81);
break;
case '81':
// Ensure PHP 8.1 compliance
$rectorConfig->sets([DowngradeLevelSetList::DOWN_TO_PHP_81]);
$rectorConfig->phpVersion(PhpVersion::PHP_81);
break;
case '80_82':
// From PHP 8.0 up to PHP 8.2
$rectorConfig->sets([SetList::PHP_82, LevelSetList::UP_TO_PHP_81]);
$rectorConfig->phpVersion(PhpVersion::PHP_80);
break;
case '80':
// Ensure PHP 8.0 compliance
$rectorConfig->sets([DowngradeLevelSetList::DOWN_TO_PHP_80]);
$rectorConfig->phpVersion(PhpVersion::PHP_80);
break;
case '74_82':
// From PHP 7.4 up to PHP 8.2
$rectorConfig->sets([SetList::PHP_82, LevelSetList::UP_TO_PHP_81]);
$rectorConfig->phpVersion(PhpVersion::PHP_74);
break;
case '74':
// Ensure PHP 7.4 compliance
$rectorConfig->sets([DowngradeLevelSetList::DOWN_TO_PHP_74]);
$rectorConfig->phpVersion(PhpVersion::PHP_74);
break;
}
};
Je modifie la valeur de la variable $step en fonction des besoins, puis je lance la vérification avec (modifiez le chemin vers le fichier de configuration si nécessaire) :
rector process --dry-run --verbose --config ./rector.php
Et si besoin j’applique les modifications proposées avec :
rector process --verbose --config ./rector.php
Il peut être utile de rajouter le paramètre --memory-limit=…
si nécessaire (ex: 512M, ou 2G)