Member-only story
Contrôlez la qualité de vos projets PHP & Symfony à l’aide des hooks Git
Cet article fait partie d’une série sur le management de la qualité de vos applications PHP & Symfony. Voici la liste des articles précédemment publiés sur le sujet :
Ce que j’ai appris de mes 3000 Code Reviews
Comment contrôler la qualité de vos projets PHP & Symfony ?
Contrôler la qualité de vos projets PHP & Symfony avec PHP-CS-Fixer
Dans mon premier article, j’ai développé mes arguments sur les problèmes que posent la relecture de code manuelle. Ensuite, j’ai abordé deux outils populaires pour contrôler la qualité du code de vos projets : PHPStan et PHP-CS-Fixer.
Dans cet article, je fais l’hypothèse que vous avez mis en place les deux outils précédents et avez corrigé les erreurs remontées jusqu’à atteindre une qualité de code qui vous semble acceptable. Je vais également considérer que vous travaillez avec le logiciel de gestion de versions de projet Git.
En configurant convenablement Git, vous allez prévenir pour de bon la possibilité de régression de la qualité de votre projet. Vous allez apprendre à mettre en place des contrôles pour empêcher le commit de code qui ne respecte plus les contraintes de qualité de votre projet.
Mais c’est quoi un hook ?
Pour clarifier un peu leur rôle, il faut rappeler que “hook” veut dire “crochet” en français. Si vous venez de l’écosystème WordPress ou PrestaShop, ce concept vous parle déjà et si vous venez de l’écosystème Symfony alors dites vous que ce sont des événements “propagés” tout au long du cycle de vie de chaque action possible à l’aide du logiciel Git.

À chaque exécution de commande Git, des hooks vont être consultés : s’il y a des instructions qui sont déclarées alors elles seront exécutées.
Ce qui est intéressant pour nous — et la raison pour laquelle j’ai repris cet excellent schéma de Delicious Insight — c’est qu’il y a des hooks qui sont bloquants (en jaune, et en rouge) :
- Le hook pre-commit va s’opposer à la création du commit si les instructions à exécuter retournent un code d’erreur ;
- Le hook pre-push va s’opposer à la création du commit si les…