Nette Coding Standard
Coding Standard automaticky naformátuje váš PHP kód podle Nette coding standardu, od odsazení a závorek až po mezery a řazení importů.
Pod kapotou kombinuje dva osvědčené nástroje, PHP CS Fixer a PHP CodeSniffer, které jsou už přednastavené, takže si nemusíte nic sami konfigurovat.
Instalace
Nástroj nainstalujte globálně pomocí Composeru:
composer global require nette/coding-standard
a ujistěte se, že váš globální adresář vendor/bin je v proměnné prostředí $PATH.
Použití
Nástroj nabízí dva příkazy. Příkaz check jen vypíše prohřešky, zatímco fix je rovnou
opraví:
ecs check
ecs fix
Bez uvedení cest prohledá adresáře src/ a tests/; můžete ale zadat i jednu nebo více
vlastních cest, například ecs check app bin.
Než nástroj poprvé spustíte v režimu oprav, určitě si soubory zazálohujte.
Verze PHP
Nástroj podporuje PHP 8.0 až 8.5 a pravidla uplatňuje přírůstkově podle verze. Verzi rozpozná automaticky z
composer.json vašeho projektu, můžete ji ale nastavit i ručně volbou --preset:
ecs check --preset php81
Vlastní pravidla
Pravidla si můžete pro svůj projekt upravit. Pro změnu pravidel PHP CS Fixeru vytvořte v kořeni projektu soubor
ncs.php:
<?php
return [
'strict_comparison' => false,
];
Pro změnu pravidel PHP CodeSnifferu vytvořte soubor ncs.xml. Nemusí odkazovat na verzový preset (ten se
přidá automaticky) a pomocí $presets/ můžete zapojit kterýkoliv z dodávaných presetů:
<?xml version="1.0"?>
<ruleset name="MyProject">
<!-- zapnutí importů use function/const -->
<rule ref="$presets/optimize-fn.xml"/>
<!-- vypnutí pravidla -->
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>
Oba soubory se načtou automaticky a vaše pravidla mají přednost před presetem. Pro jednorázovou úpravu, kterou nechcete
commitovat, předáte další soubor volbou --config-file (.php pro fixer, .xml pro
sniffer).
Continuous integration
V CI nástroj nainstalujte jako projekt a spusťte ho odtud:
- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check