GrumPHP est une une librairie de tâches de pre-commit. Lors de son installation, il va ajouter un git hook. Ce dernier lancera GrumPHP pour qu’il lance, à son tour, une liste de tâches.
Concrètement, vous avez décidé de respecter PSR-12 (code-style), inutile de perdre du temps sur une PR pour vérifier que la PSR est respectée. Lors du commit une vérification aura lieu et bloquera le commit si elle n’est pas respectée.
Installation
composer require --dev phpro/grumphp-shim
composer require --dev squizlabs/php_codesniffer
Lors de l’installation, la commande va vous demander si vous souhaitez créer le fichier grumphp.yml
, répondez « oui ».
Après vous allez découvrir toutes les tâches qui existent dans GrumPHP. Nous allons configurer PHPCS
#grumphp.yml
grumphp:
tasks:
phpcs:
standard: 'PSR12'
Il est temps d’analyser votre code ?
Cette commande va analyser tout votre code. Mais lors du commit, seuls vos fichiers seront analysés.
vendor/bin/grumphp run
Vous venez de gagner de précieuses heures en relecture de PR.
Aller plus loin
grumphp:
tasks:
phpcsfixer:
config: .php_cs
phpstan:
configuration: phpstan.neon
memory_limit: "-1"
use_grumphp_paths: false
level: 7
phpunit:
testsuite: "Unit"
phpcs:
standard: 'PSR12'
ignore_patterns:
- /^src\/Migrations\/(.*)/
- /^config\/(.*)/
parallel:
enabled: true
max_workers: 4
Voici un exemple un peu plus complet. Vous pouvez cumuler plusieurs tâches et les faire tourner en parallèle. Attention à ne pas mettre une tâche trop longue, des tests fonctionnels par exemple, car vos commit vont prendre du temps.
Les commandes utiles
vendor/bin/grumphp run --tasks=phpcs,phpstan
vendor/bin/grumphp run
git commit -n
La 1ère lance les tâches phpcs et phpstan sur tout votre code. A faire après l’ajout d’une tâche.
La 2ème lance toutes les tâches sur tout votre code. A faire après avoir installé GrumPHP.
La dernière, permet de désactiver le hook, donc de ne pas lancer GrumPHP.