Nette Coding Standard
Coding Standard met automatiquement en forme votre code PHP selon le standard de codage de Nette, de l'indentation et des accolades jusqu'aux espaces et à l'ordre des imports.
En interne, il combine deux outils reconnus, PHP CS Fixer et PHP CodeSniffer, livrés préconfigurés : vous n'avez donc rien à régler vous-même.
Installation
Installez l'outil globalement à l'aide de Composer :
composer global require nette/coding-standard
et assurez-vous que le répertoire global des binaires de Composer figure dans votre variable d'environnement $PATH.
Utilisation
L'outil propose deux commandes. La commande check se contente de signaler les manquements, tandis que
fix les corrige automatiquement :
ecs check
ecs fix
Sans argument, il parcourt les répertoires src/ et tests/ ; vous pouvez aussi lui passer un ou
plusieurs chemins à vous, par exemple ecs check app bin.
Avant de lancer le correcteur pour la première fois, pensez à sauvegarder vos fichiers.
Version de PHP
L'outil prend en charge PHP 8.0 à 8.5 et applique les règles progressivement selon la version. Il détecte celle-ci
automatiquement d'après le composer.json de votre projet, mais vous pouvez aussi l'indiquer explicitement avec
l'option --preset :
ecs check --preset php81
Règles personnalisées
Vous pouvez ajuster les règles pour votre projet. Pour modifier les règles de PHP CS Fixer, créez un fichier
ncs.php à la racine du projet :
<?php
return [
'strict_comparison' => false,
];
Pour modifier les règles de PHP CodeSniffer, créez un fichier ncs.xml. Il n'a pas besoin de référencer le
preset de version (il y est combiné automatiquement), et vous pouvez utiliser $presets/ pour importer n'importe quel
preset fourni :
<?xml version="1.0"?>
<ruleset name="MyProject">
<!-- enable use function/const imports -->
<rule ref="$presets/optimize-fn.xml"/>
<!-- disable a rule -->
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>
Les deux fichiers sont trouvés automatiquement et vos règles ont la priorité sur le preset. Pour une surcharge ponctuelle
que vous ne voulez pas versionner, passez un fichier supplémentaire avec --config-file (.php pour le
fixer, .xml pour le sniffer).
Intégration continue
Dans un pipeline CI, installez l'outil comme un projet et lancez-le depuis là :
- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check