Nette Coding Standard

Coding Standard automatycznie formatuje Twój kod PHP zgodnie ze standardem kodowania Nette, od wcięć i nawiasów po odstępy i kolejność importów.

Pod maską łączy dwa standardowe w branży narzędzia, PHP CS Fixer i PHP CodeSniffer, które przychodzą wstępnie skonfigurowane, więc nie musisz sam niczego ustawiać.

Instalacja

Zainstaluj narzędzie globalnie za pomocą Composera:

composer global require nette/coding-standard

i upewnij się, że Twój globalny katalog binarek vendora jest w Twojej zmiennej środowiskowej $PATH.

Użycie

Narzędzie udostępnia dwa polecenia. Polecenie check tylko zgłasza naruszenia, podczas gdy fix naprawia je automatycznie:

ecs check
ecs fix

Bez żadnych argumentów skanuje katalogi src/ i tests/; możesz też przekazać jedną albo więcej własnych ścieżek, na przykład ecs check app bin.

Zanim uruchomisz fixer po raz pierwszy, koniecznie zrób kopię zapasową swoich plików.

Wersja PHP

Narzędzie wspiera PHP od 8.0 do 8.5 i stosuje reguły przyrostowo zgodnie z wersją. Wykrywa wersję automatycznie z pliku composer.json Twojego projektu, ale możesz ją też ustawić jawnie opcją --preset:

ecs check --preset php81

Własne reguły

Reguły możesz dostroić do swojego projektu. Żeby zmienić reguły PHP CS Fixera, utwórz w katalogu głównym projektu plik ncs.php:

<?php
return [
	'strict_comparison' => false,
];

Żeby zmienić reguły PHP CodeSniffera, utwórz plik ncs.xml. Nie musi odwoływać się do presetu wersji (jest z nim łączony automatycznie), a za pomocą $presets/ możesz wciągnąć dowolny dołączony preset:

<?xml version="1.0"?>
<ruleset name="MyProject">
	<!-- włącz importy use function/const -->
	<rule ref="$presets/optimize-fn.xml"/>

	<!-- wyłącz regułę -->
	<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>

Oba pliki są wykrywane automatycznie, a Twoje reguły mają pierwszeństwo przed presetem. Dla jednorazowego nadpisania, którego nie chcesz commitować, przekaż dodatkowy plik opcją --config-file (.php dla fixera, .xml dla sniffera).

Continuous Integration

W pipeline'ie CI zainstaluj narzędzie jako projekt i uruchom je stamtąd:

- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check