Vérifier le code style avec PHP code sniffer
Auteur : Philippe Le Van - @plv@framapiaf.org
Date : 25 mai 2022
Introduction
PHP code sniffer permet de vérifier le code style. Nous prenons comme exemple un code symfony raisonnablement récent (Symfony 5+)
PHP code sniffer (phpcs) vient également un outil de correction automatique : PHP code beautifuler (phpcbf)
Installation
Pour ajouter code sniffer aux dépendances, on peut lancer :
| composer require --dev squizlabs/php_codesniffer
|
Lors de cette installation, flex install un fichier de configuration de base pour une vérification du style PSR-12
Configuration
La configuration de PHP Code Sniffer (phpcs pour les intimes) est faite dans le fichier de conf par défaut à la racine du projet : phpcs.xml.dist
Dans ce projet, nous avons utilisé la "Rule PSR12" dans laquelle on exclue certains "sniffs" c'est-à-dire certaines vérifications.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 | <?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd">
<arg name="basepath" value="."/>
<arg name="cache" value=".phpcs-cache"/>
<arg name="colors"/>
<arg name="extensions" value="php"/>
<rule ref="PSR1"/>
<rule ref="PSR12">
<!--
Les règles suivantes sont exclues parce qu'elles sont
incompatibles entre php-cs-fixer et phpcbf (php code beautifuler)
-->
<exclude name="PSR12.Operators.OperatorSpacing.NoSpaceBefore"/>
<exclude name="PSR12.Operators.OperatorSpacing.NoSpaceAfter"/>
<exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact"/>
<exclude name="PSR12.Files.FileHeader.SpacingAfterBlock"/>
<exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect"/>
</rule>
<file>bin/</file>
<file>config/</file>
<file>public/</file>
<file>src/</file>
<file>tests/</file>
</ruleset>
|
Lancer phpcs
Pour lancer phpcs, il y a des options pratiques à connaître
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | # lancement par défaut : montre toutes les erreurs et les warning
./vendor/bin/phpcs
# -s : permet d'afficher les "sniff code" des erreurs
# pour pouvoir ensuite les exclure dans le phpcs.xml.dist
./vendor/bin/phpcs -s
# --report=(summary|full)
# "full" est la valeur par défaut, affiche toutes les erreurs
# "summary" affiche un tableau synthétique avec les stats d'échec
./vendor/bin/phpcs --report=summary
# -n : on ne voit plus les warning, que les erreurs
./vendor/bin/phpcs -s -n
|
Lancer PHP Code Beautifuler : phpcbf
phpcbf peut corriger certaines erreurs, mais pas toutes (notamment pas les lignes trop longues)