Nette Coding Standard
*********************
.[perex]
[Coding Standard |https://github.com/nette/coding-standard] met automatiquement en forme votre code PHP selon le [standard de codage de Nette |contributing:coding-standard], 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 :
```shell
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`|https://getcomposer.org/doc/03-cli.md#global].
Utilisation
===========
L'outil propose deux commandes. La commande `check` se contente de signaler les manquements, tandis que `fix` les corrige automatiquement :
```shell
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` :
```shell
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
<?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
<?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à :
```yaml
- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check
```
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