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