Si vous utilisez GIT comme gestionnaire de version, vous connaissez peut-être déjà les hooks, qui permettent d’ajouter des comportements automatiques qui se déclencheront lorsque vous effectuerez des actions avec votre gestionnaire de sources préféré, comme par exemple lors d’un commit.
Nous allons voir aujourd’hui comment mettre en place la librairie php-git-hooks
écrite par bruli, dans votre projet Symfony2 afin de valider la qualité du code de votre projet lors de chaque commit GIT et ainsi limiter votre dette technique.
Introduction à php-git-hooks
php-git-hooks
est une librairie open-source vous permettant d’ajouter des comportements automatisés qui seront exécutés lors de chaque commit sur votre projet PHP.
La librairie fournie une intégration pour les softwares listés ci-dessous, paramétrables via un simple fichier de configuration situé à la racine de votre projet Symfony.
- PHPMD – détection du code de mauvaise qualité et des bugs probables.
- PHP_CodeSniffer – inspection de votre code PHP afin de détecter les violations d’un ensemble de règles de codage définies.
- PHP-CS-Fixer – analyse et corrige automatiquement votre code PHP afin qu’il respecte les standards de codage (PSR-1 / PSR-2)
- PHPUnit – exécute votre suite de tests unitaires/fonctionnels.
- PHPLint – vérification et validation de la syntaxe de votre code PHP.
Toutes ces dépendances sont gérées et installées via Composer, aucune installation système préalable n’est requise pour utiliser toute la stack.
Installation
Grâce à composer, l’installation de la librairie dans votre projet se fait très facilement.
composer require bruli/php-git-hooks --dev
Une fois la commande exécutée, editez votre fichier composer.json
, et ajoutez :
"scripts": {
"post-install-cmd": [
...other lines...
"PhpGitHooks\\Application\\Composer\\ConfiguratorScript::buildConfig"
],
"post-update-cmd": [
...other lines...
"PhpGitHooks\\Application\\Composer\\ConfiguratorScript::buildConfig"
]
}
Puis lancez un composer install
, qui permettra de choisir la configuration de votre hook pre-commit.
composer install
Un fichier php-git-hooks.yml
est généré à la racine de votre projet, avec la configuration que vous avez sélectionné.
Configuration
Vous pouvez à tout moment modifier le comportement à éxécuter lors de vos commits en éditant le fichier de configuration php-git-hooks.yml
disponible à la racine de votre projet Symfony2.
cp vendor/bruli/php-git-hooks/hooks/pre-commit .git/hooks
Fichier de configuration par défaut
Voici le fichier de configuration php-git-hooks.yml
généré par default :
pre-commit:
enabled: true
execute:
php-cs-fixer:
enabled: true
levels:
psr0: true
psr1: true
psr2: true
symfony: true
phpunit: true
phplint: true
phpcs: true
phpmd: true
jsonlint: true
commit-msg:
enabled: true
regular-expression: '#[0-9]{2,7}'
Pre-commit
Notre hook pre-commit est prêt à être utilisé 🙂
Voici ce que vous devriez voir lorsque vous effectuez un commit sur votre projet :
Le commit est valide
Le commit est invalide
Activer manuellement php-git-hooks
Si vous le souhaitez, vous pouvez activer manuellement le hook pre-commit sur votre projet.
Pour cela, copiez le fichier hooks/pre-commit
dans votre répertoire .git/hooks
:
cp vendor/bruli/php-git-hooks/hooks/pre-commit .git/hooks