Phpcs (ou PHP Code Sniffer) est un inspecteur de code permettant de vérifier la validité du code écrits en fonction de standards.
Pour l'ajouter à notre projet drupal géré via composer :
composer require squizlabs/php_codesniffer # Ou si vous utilisez docker-compose docker-compose exec php composer require squizlabs/php_codesniffer
Drupal a son propre fichier de règles (un fichier xml) utilisable par phpcs, il est compris dans une dépendance drupal spécifique : coder
Pour l'installer :
composer require drupal/coder:^8.3.1 # Ou avec docker-compose docker-compose exec php composer require drupal/coder:^8.3.1
Une fois coder installé, il faut informer phpcs de l'emplacement du fichier de règles (contenu dans coder) :
# /var/www/html/ est le docroot de mon projet dans mon container dockerdocker-compose exec php vendor/bin/phpcs --config-set installed_paths /var/www/html/vendor/drupal/coder/coder_sniffer
On vérifie que « Drupal » est maintenant bien présent dans les standards de code installés :
docker-compose exec php vendor/bin/phpcs -i # Ce qui devrait vous retourner : # The installed coding standards are PEAR, PSR2, Zend, MySource, Squiz, PSR12, PSR1, DrupalPractice and Drupal
Et voila, nous pouvons maintenant lancer des inspections :
# Note : ici je me contente d'inspecter le module "mespronos" situé dans le dossier : ./web/modules/mespronosdocker-compose exec php ./vendor/bin/phpcs --colors --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml ./web/modules/mespronos # on pourrait imaginer inspecter tous nos modules custom avec la commande suivante : docker-compose exec php ./vendor/bin/phpcs --colors --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml ./web/modules/custom
Si vous utilisez un makefile (plus d'informations) vous pouvez vous créer un « raccourci » :
## phpcs : Launch phpcs inspections for ./web/modules/customphpcs: @docker-compose exec php ./vendor/bin/phpcs --colors --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml ./web/modules/custom
Ainsi pour lancer vos inspections, vous n'aurez qu'à lancer la commande « make phpcs »