Présentation de PHP_CodeSniffer ?
PHP_CodeSniffer, aussi connu sous le nom raccourci PHPCS, est un outil conçu en PHP par l’équipe Squiz Labs et qui vise à vous aider dans l’amélioration de la qualité de votre code.
Le projet ne dispose pas de site officiel mais d’un projet Git : GitHub PHP_CodeSniffer.
PHPCS détectera des écarts par rapport aux standards dans les fichiers PHP et permettra d’en corriger un certain nombre automatiquement. Pour ce faire, lors de son installation PHPCS déploie deux outils : phpcs et phpcbf.
PHPCS et PHPCBF
PHP_CodeSniffer installe donc deux outils pouvant être exécutés sur votre projet et ayant donc chacun un rôle précis pour vous assister dans l’amélioration de la qualité de votre code.
Le premier, phpcs, a pour but d’analyser les fichiers PHP d’un projet pour y détecter les écarts par rapport aux standards.
Le second, phpcbf, a pour but de corriger automatiquement les anomalies détectées par phpcs. Une correction automatique n’étant pas toujours possible, il faudra parfois une intervention du développeur.
Installation
Installation via Composer dans votre projet :
composer require --dev "squizlabs/php_codesniffer"
Vérifier l’installation en exécutant les deux commandes suivantes :
php ./vendor/bin/phpcs php ./vendor/bin/phpcbf
En cas d’erreur, assurez-vous que la variable d’environnement PATH de votre machine contient bien le répertoire bin de Composer. La valeur par défaut du chemin est ~/.composer/vendor/bin/. Vous pouvez vérifier cette donnée grâce à la commande suivante :
composer global config bin-dir --absolute
Utilisation
Scanner un répertoire pour détecter les erreurs :
# La ligne de commande vendor/bin/phpcs src # La sortie par défaut FILE: /var/www/html/phpunit/src/Person.php ------------------------------------------------------------------------------------------- FOUND 8 ERRORS AFFECTING 5 LINES ------------------------------------------------------------------------------------------- 2 | ERROR | [ ] Missing file doc comment 5 | ERROR | [ ] Missing doc comment for class Person 5 | ERROR | [x] Opening brace of a class must be on the line after the definition 6 | ERROR | [ ] Private member variable "first_name" must be prefixed with an underscore 8 | ERROR | [ ] Missing doc comment for function __construct() 8 | ERROR | [x] Opening brace should be on a new line 12 | ERROR | [ ] Missing doc comment for function getFirstName() 12 | ERROR | [x] Opening brace should be on a new line ------------------------------------------------------------------------------------------- PHPCBF CAN FIX THE 3 MARKED SNIFF VIOLATIONS AUTOMATICALLY -------------------------------------------------------------------------------------------
Corriger automatiquement des erreurs :
# La ligne de commande vendor/bin/phpcbf src # La sortie par défaut PHPCBF RESULT SUMMARY ---------------------------------------------------------------------- FILE FIXED REMAINING ---------------------------------------------------------------------- /var/www/html/phpunit/src/Person.php 3 5 ---------------------------------------------------------------------- A TOTAL OF 3 ERRORS WERE FIXED IN 1 FILE ----------------------------------------------------------------------