J’ai récemment intégré dans mon workflow de développement l’outil PHP Coding Standard Fixer pour m’aider à contrôler la qualité du code produit.

Cet outil a pour objectif de valider et corriger les fichiers PHP en s’appuyant sur des règles définies. Il est utilisé sur des projets comme Symfony et vient remplacer de plus en plus son prédécesseur PHP Code Sniffer dans les parages depuis bien longtemps.
Comme il est livré avec une énorme liste de règles prédéfinie et qu’il ne s’appuie par sur un format de configuration PHP simple et lisible, il gagne de plus en plus sa place dans le coeur des développeurs.

De mon côté j’aime utiliser PHP Code Sniffer car j’y suis habitué et que je reste pour le moment sur des guides de style standard PSR-1 et PSR-2. Malheureusement il ne fait pas tout et son descendant est assez puissant pour du nettoyage ponctuel.

Installation de php-cs-fixer

Il existe 4 façons d’installer cet outil sur un poste de travail…

Avec le fichier Phar compilé

Il est généré sur les serveurs de SensioLabs. C’est la méthode d’installation la plus portable et légère disponible.

curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer
chmod a+x php-cs-fixer
mv php-cs-fixer /usr/local/bin/php-cs-fixer

Avec Composer

composer global require friendsofphp/php-cs-fixer

Attention, avec cette méthode il faut vous assurer que le répertoire bin global de composer est bien dans votre variable d’environnement $PATH.
Si ce n’est pas le cas, il suffit d’ajouter :

export PATH="$PATH:$HOME/.composer/vendor/bin"

Avec Homebrew

Disponible uniquement pour les utilisateur de macOS, il s’agit d’un gestionnaire de dépendance très pratique. Il faut d’abord installer le paquet homebrew-php puis il suffit de lancer la commande :

brew install homebrew/php/php-cs-fixer

Nettoyage du code source

Normalement, un exécutable php-cs-fixer est maintenant disponible dans votre terminal. Pour nettoyer un fichier/dossier content du code source, il suffit d’utiliser la commande :

php-cs-fixer fix --fixers=... [chemin à nettoyer]

La liste des « fixers » est disponible sur le Github et contient plus de 120 règles à appliquer. Celle qui m’intéresse particulièrement est unused_use, qui va analyser les déclarations « use ... » au début des fichiers et supprimés ceux qui sont inutilisés dans ce même fichier.
Exemple pour nettoyer le répertoire src :

php-cs-fixer fix --fixers=unused_use src

Il existe aussi des groupes de règles par défaut (psr0, psr1, psr2, symfony) qui sont utilisables avec l’argument --level, par exemple :

php-cs-fixer fix --level=symfony src

Avec ce genre d’outil, il devient assez facile de standardiser la forme du code produit pour éviter les incohérences et permettre une lisibilité exemplaire. C’est vraiment conseillé dans les projets impliquant de multiple développeur car ça permet d’écrire un code propre et solide, dans sa forme au moins 🙂