TECHNOLOGIES

Rector, refactoring automatique PHP

Rector est un outil de refactoring automatique pour PHP basé sur l'analyse de l'AST. Il applique des règles de transformation prédéfinies ou personnalisées pour moderniser le code, supprimer les patterns dépréciés et automatiser les migrations de version.

Cette fiche documente nos conventions d'usage, notre configuration type et notre intégration dans les pipelines CI/CD.

Rector

POURQUOI RECTOR

Ce qui en fait un outil indispensable sur nos projets

Rector s'est imposé dans notre workflow dès qu'un projet atteint une certaine maturité. Voici pourquoi nous l'activons systématiquement sur les projets Symfony en évolution.

Refactoring automatisé à grande échelle

Rector analyse l'AST (arbre syntaxique) du code et applique des centaines de règles de transformation en une seule commande. Ce qui prendrait des semaines à la main s'exécute en minutes.

Migrations de version PHP et Symfony

Les sets officiels LevelSetList::UP_TO_PHP_83 et SymfonySetList::SYMFONY_70 modernisent automatiquement le code lors de chaque montée de version majeure.

Suppression de la dette technique

Rector détecte et corrige les patterns dépréciés, les appels obsolètes et les anti-patterns connus — sans risque d'oubli et sans revue manuelle exhaustive.

Diff lisible et explicable

Chaque transformation produit un diff clair et atomique. Le code modifié par Rector est révisable en MR comme n'importe quelle contribution humaine — aucune boîte noire.

Règles personnalisées

Rector est extensible : on peut écrire ses propres règles pour appliquer des conventions internes, renommer des classes ou migrer vers une nouvelle API maison.

Mode CI — vérification sans modification

L'option --dry-run transforme Rector en linter : il signale les règles non appliquées sans modifier le code, idéal pour bloquer une MR qui ne respecte pas les standards.

NOTRE USAGE

Comment nous utilisons Rector chez SmartBooster

Rector intervient à plusieurs moments du cycle de vie d'un projet. Voici les quatre contextes dans lesquels nous l'utilisons.

Montées de version PHP et Symfony

Rector nous fait gagner un temps précieux lors d'une migration majeure. Il applique les sets officiels puis nous revoyons le diff avant de compléter manuellement.

Résorption de dette technique

Sur les projets legacy, Rector modernise en lot les patterns dépréciés (annotations Doctrine → attributs PHP 8, constructors promotion, types stricts…).