PHP_CodeSniffer

par

dans

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
----------------------------------------------------------------------