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 :