PHP_CodeSniffer installé "globalement" et règles SPIP

Bonsoir à tous,

J’essaie de faire en sorte de bénéficier de PHP_CodeSniffer sur l’ensemble de mes projets, sur une machine sous Debian Bullseye :

composer global require squizlabs/php_codesniffer
composer global require spip/coding-standards

J’ai ensuite configuré PHP_CodeSniffer pour bénéficier des règles de SPIP :

phpcs --config-set installed_paths ~/.config/composer/vendor/spip/coding-standards/src/

Mais, car oui, il y a un mais ^^, lorsque j’essaie d’appeler phpcs sur un projet quelconque, avec ce phpcs.xml :

<?xml version="1.0"?>
<ruleset>
    <file>./</file>
    <exclude-pattern>vendor/*</exclude-pattern>

    <rule ref="SPIP40"/>
</ruleset>

j’obtiens l’erreur suivante:

ERROR: Referenced sniff "PHPCompatibility" does not exist
Run "phpcs --help" for usage information

Le package est bien présent dans mon répertoire « global » ~/.config/composer/vendor/.

Une idée de comment solutionner ce problème ?

Merci !

Ah ! J’étais le problème ! Il faut déclarer les standards PHPCompatibility à PHP_Codesniffer, et sans oublier la virgule entre les deux chemins…

Je travaille à une doc, je partagerai :slight_smile:

1 « J'aime »

Pouce en l’air :slight_smile:

J’ai donc rédigé un article qui reprend l’ensemble des étapes réalisées localement qui aboutissent à une installation fonctionnelle : Installer « globalement » PHP_CodeSniffer | My Own Memory Hole
En espérant que cela puisse servir :slight_smile:
Dans l’attente de vos éventuels retours.

1 « J'aime »

Super merci @bricebou, moi ça devrait m’être très utile :slight_smile:

Moi l’objectif c’est plus précisément pour l’extension phpcs dans vscode, j’étais pas arrivé à configurer le truc afin que ça utilise le ruleset de SPIP*. On va voir ce que ça donne avec ces infos supplémentaires !

(* edit : avec le vieux ça marchait, mais pas avec le nouveau)

Personnellement, sous VSCode, je ne me suis pas encore décidé pour l’extension à utiliser… C’est un peu la jungle…
Tu utilises laquelle du coup ?

A priori, si tu utilises un phpcs.xml à la racine de ton projet, pas besoin de déclarer quoi que ce soit au plugin, pas même le chemin vers l’exécutable. Enfin, je pense…

Quoique… Je viens de tester PHP Sniffer & Beautifier et j’ai dû spécifier le chemin vers les exécutables dans /home/$USER/bin/.