Qualité de code - Intégration de php-git-hooks dans Symfony2

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

Configuration de PHP-GIT-HOOKS

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

pre-commit valid

Le commit est invalide

pre-commit error

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

Allez plus loin

Voir l’étude de cas
Lire l’article
Voir le témoignage
Fermer