Skip to content

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 :

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

1
./vendor/bin/phpcbf