Usage : quelques exemples de commandes
Tester un fichier php seul :
- phpcs dossier/fichier_truc.php
Tester un dossier complet : par ex à la racine d’un répertoire de plugin
(/ !\ attention ! lancer phpcs sur un gros dossier avec beaucoup de fichiers (php / css / js) sans faire de restrictions via la configuration peut entraîner une GROSSE charge pour votre processeur !)
- phpcs dossier/
devrait retourner tout un tas d’erreurs à corriger, pour à peu près tous les types de fichiers (js, css, php)
Restreindre la portée du scan aux fichiers PHP, exclure des dossiers :
En ajoutant le fichier `phpcs.xml` à la racine du répertoire avec le contenu proposé dans momh.fr, on doit restreindre la détection des erreurs aux fichiers .html et .php
Le contenu du fichier :
- <?xml version="1.0"?>
- <ruleset>
- <file>./</file>
- <exclude-pattern>**/*.js</exclude-pattern>
- <exclude-pattern>**/*.css</exclude-pattern>
- <exclude-pattern>**/*.scss</exclude-pattern>
- <exclude-pattern>node_modules/*</exclude-pattern>
- <exclude-pattern>vendor/*</exclude-pattern>
- <arg name="colors"/>
- <rule ref="SPIP41"/>
- </ruleset>
Tester uniquement avec les coding-standard de SPIP :
- phpcs --standard=SPIP41 dossier/fichier_truc.php
Ne pas afficher les warnings (uniquement les erreurs) :
- phpcs -n dossier/fichier_truc.php
Colorer la sortie :
- phpcs --colors dossier/fichier_truc.php
Compléments de configuration : l’option —config-set
Utilisation de l’option —config-set :
par exemple si vous n’utilisez phpcs/phpcbf que pour les standards SPIP, pour éviter d’ajouter l’option `—standard=SPIP41` à chaque appel de la commande, vous pouvez passer ce paramètre en option par défaut avec :
- phpcs --config-set default_standard SPIP41
NB : cela donne une configuration écrite dans le fichier ...Composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf
qu’il est possible de bricoler directement aussi
La syntaxe de cette option est de la forme :
- phpcs --config-set clé valeur
par ex pour avoir la coloration par défaut
- phpcs --config-set colors 1
La documentation pour les configurations possibles avec l’option —config-set :
https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options
Exemple de fichier de configuration CodeSniffer.conf pour colorer systématiquement, utiliser les standards SPIP41 et ignorer les warnings :
- <?php
- 'installed_paths' => 'C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/phpcompatibility/php-compatibility,C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/spip/coding-standards/src',
- 'default_standard' => 'SPIP41',
- 'colors' => 1,
- 'show_warnings' => 0,
- );
- ?>
Spécifique installation sous Windows :
Adaptations du post de https://momh.fr/installer-globalement-php_codesniffer
On suppose :
- l’utilisateur connecté à la session Windows est VOTRE_USER
- Composer installé sur la machine
- on utilise Gitbash comme interpréteur de commandes (cf https://contrib.spip.net/SPIP-Cli#Specificites-d-installation-sous-Windows)
1/ Installation globale :
- composer global --dev require squizlabs/php_codesniffer
- composer global --dev require spip/coding-standards
Tester que c’est OK :
- phpcs --help
- phpcbf --help
doivent retourner le Help avec toutes les options de la commande
2/ Déclarer le répertoire des standards SPIP à PHP_CodeSniffer :
- phpcs --config-set installed_paths C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/phpcompatibility/php-compatibility,C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/spip/coding-standards/src
cette commande devrait retourner :
- Using config file: C:\Users\VOTRE_USER\AppData\Roaming\Composer\vendor\squizlabs\php_codesniffer\CodeSniffer.conf
Pour tester que la config est OK la commande :
- phpcs -i
devrait retourner quelque chose comme :
- The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, PHPCompatibility, SCS1, SPIP40 and SPIP41
Références :
- pour l’installation le billet du blog momh.fr : https://momh.fr/installer-globalement-php_codesniffer
- le Github de PHP_codeSniffer : https://github.com/squizlabs/PHP_CodeSniffer