Présentation de GrumPHP

Quand on travaille à plusieurs sur un projet, il peut être intéressant de mettre en place des outils de qualité de code afin d’harmoniser le code source que vous souhaitez mettre en place sur votre projet (linter, CodeSniffer et tests) mais pour cela, il faudra alors s'assurer que tous les collaborateurs les utilisent afin d'en tirer réellement partie et c'est là que GrumPHP rentre en jeux.

Qu'est ce que GrumPHP ?

GrumPHP est un outil de test de qualité de code. Son but : lancer tout une batterie de test (phpcs, eslint, yamllint...) avant de commiter son code via les hooks de Git. L'avantage comparé à un script manuel, c'est qu'il va automatiquement créer les hooks git dans le dossier .git/hook/

Installation de GrumPHP à partir de drupal-quality-checker

Mise en place du fichier de conf GrumPHP

À la racine de votre projet créer un fichier qui va s'appeler  grumphp.yml

PS: Si vous utilisez docker, vous devez renseigner la partie git_hook_variables

- VAGRANT_PROJECT_DIR: correspond au dossier racine de votre Drupal dans le container

- EXEC_GRUMPHP_COMMAND: commande docker compose (ici mon container s'appelle web

parameters:
  ascii:
    failed: vendor/vijaycs85/drupal-quality-checker/resources/ascii/grumpy.txt
    succeeded: vendor/vijaycs85/drupal-quality-checker/resources/ascii/happy.txt
  git_dir: .
  bin_dir: vendor/bin
  git_hook_variables:
    VAGRANT_PROJECT_DIR: /project
    EXEC_GRUMPHP_COMMAND: docker-compose run --no-deps web
  tasks:
    phplint: ~
    yamllint: ~
    composer: ~
    composer_normalize: ~
    jsonlint: ~
    twigcs: ~
    phpcpd:
      directory: './src'
    phpcs:
      standard: Drupal
      ignore_patterns:
        - .github
        - .gitlab
        - bower_components
        - node_modules
        - vendor
      triggered_by:
        - php
        - module
        - inc
        - install
        - test
        - profile
        - theme
        - css
        - info
        - txt
        - md

Installation du package drupal-quality-checker

$ composer require --dev vijaycs85/drupal-quality-checker:dev-master

Au moment d'écrire ces ligne la dernière version tagué de drupal-quality-checker, n'intégrait pas le paramètre git_hook_variables, c'est pour cela que j'ai prise la branche master.
 

Une fois installé, 2 hooks vont être crée .git/hooks/pre-commit et .git/hooks/commit-msg

 

 

Lorsque vous commitez voici le résultat :