Tutoriel Vidéo PHP GrumPHP

Télécharger la vidéo

07-12-2016 13:00:00

Lorsque l'on travaille à plusieurs, il est souvent difficile de se mettre d'accord sur les règles à utiliser sur un projet et il est encore plus compliqué de les faire appliquer. Il est possible de mettre en place une série de tâches pour s'assurer de la qualité du code (linter, CodeSniffer et tests) mais il faudra alors s'assurer que tous les collaborateurs les utilisent afin d'en tirer réellement partie. Et c'est là que GrumPHP intervient.

Que fait GrumPHP ?

GrumPHP va simplement créer des hooks git qui vont permettre de lancer une série de vérification lors de chaque commit. Ces vérifications sont définies à l'aide d'un fichier .yml situé à la racine du projet et permettent de configurer différentes opérations (CodeSniffer, Linter, Tests unitaires...). Lorsqu'une personne clone votre projet et installe les dépendances, GrumPHP rajoutera automatiquement les hooks et forcera ainsi l'utilisation de vos normes / tests.

Installation

Comme beaucoup d'outils PHP GrumPHP s'installe à l'aide de composer.

composer require --dev phpro/grumphp

Lorsque le package s'installe il ajoutera une série de hooks git à votre projet et devrait afficher le message

Watch out! GrumPHP is sniffing your commits!

Si ce message ne s'affiche pas vous pouvez recréer les hooks et la configuration à l'aide des commandes

vendor/bin/grumphp configure
vendor/bin/grumphp git:init

Vous pourrez d'ailleurs utiliser cette commande pour lancer les vérifications manuellement par la suite

vendor/bin/grumphp run

Configuration

La configuration se fait au travers du fichier grumphp.yml généré par l'installation de GrumPHP.

parameters:
    bin_dir: "./vendor/bin"
    git_dir: "."
    tasks:
        composer: ~
        gulp: ~
        jsonlint: ~
        kahlan: ~
        phpcs: ~
        phpcsfixer2: ~
        phplint: ~
        phpspec: ~
        phpunit: ~

C'est la partie tasks qui va vous permettre de définir les tâches à utiliser avant vos commits. L'ensemble de ces tâches disponibles dans la documentation. Par exemple pour PHP CS Fixer il est possible de définir les options suivantes :

# grumphp.yml
parameters:
    tasks:
        phpcsfixer2:
            allow_risky: false
            cache_file: ~
            config: ~
            rules: []
            using_cache: true
            path_mode: ~
            verbose: true

~ permet d'utiliser la valeur par défaut. Les options correspondent généralement à celles disponibles dans les commandes concernées.