Z PHP_CodeSniffer a Slevomatu
phpcs.xml na dresscode.php, phpcs a phpcbf na check a fix, jiné exit kódy a tabulka sniffů s jejich protějšky.
Před začátkem
Projděte si společný postup: kód a komentáře můžete nechat, jak jsou, konfiguraci
přeloží import, komentáře přepíše migrate-suppressions. Tahle stránka doplňuje, co je
u PHP_CodeSniffer zvláštní. A jedna dobrá zpráva rovnou: phpcs.xml je XML, takže import ho
přečte bez PHP_CodeSniffer i bez Slevomatu, i když už jsou odinstalované.
Překlad konfigurace
vendor/bin/dresscode import phpcs.xml > dresscode.php
Sady PSR1, PSR2 a PSR12 se překládají na preset dresscode/psr12. Sniffy
se překládají jménem, i s vlastnostmi z <properties>, kde mají protějšek:
Generic.Files.LineLength s lineLimit je dresscode/line-length s limit,
SlevomatCodingStandard.Namespaces.UnusedUses je dresscode/unused-imports,
Squiz.WhiteSpace.OperatorSpacing je dresscode/binary-operator-spacing. Vyloučení sniffu uvnitř sady
(<exclude name="…"/>) a umlčení přes <severity>0</severity> import
nepřenáší; takové pravidlo vypnete v rules hodnotou false. Sniff bez protějšku skončí ve
výpisu na chybovém výstupu; typicky jsou to sniffy o dokumentaci z balíku Squiz.Commenting a sniffy, které
hlídají totéž co jiný sniff jinými slovy.
Co v phpcs.xml není pravidlo a přepíšete to ručně:
<file>a<exclude-pattern>dopathsaexcludePaths; vzory jsou popsané v Konfiguraci.<arg name="extensions">dofileExtensions.<config name="php_version">není potřeba: verze se čte zcomposer.json.<arg name="tab-width">a odsazení řeší preset nebostyle.
Slevomat: jeho sniffy, které DressCode pokrývá, se přeloží jménem jako každé jiné; jeho pomocné třídy a nastavení
installed_paths nic nepotřebuje.
Příkazy
| PHP_CodeSniffer | DressCode |
|---|---|
phpcs src |
dresscode check src |
phpcbf src |
dresscode fix src |
phpcs --standard=PSR12 src |
dresscode check --preset dresscode/psr12 src |
phpcs --report=checkstyle |
dresscode check -f checkstyle |
phpcs --report=json |
dresscode check -f json |
phpcs --parallel=8 |
dresscode check --jobs 8 |
phpcs --cache |
cache je zapnutá sama; --no-cache ji obejde |
phpcs -p |
průběh se ukazuje sám na terminálu |
.phpcs.xml.dist |
dresscode.neon.dist |
PHP_CodeSniffer rozlišuje exit kódem, jestli jsou nalezená porušení opravitelná, a phpcbf má vlastní
stupnici. DressCode vrací 0 pro čisto, 1 pro porušení a 2 pro selhání nástroje;
kolik z porušení šlo opravit, říká shrnutí a formát json. Skript, který exit kód vyhodnocuje, potřebuje
jednu úpravu.
Co je jinak
- Jeden nástroj pro kontrolu i opravu.
phpcsaphpcbfbyly dva příkazy s občas různým výsledkem, protože oprava mohla odhalit další porušení. Tady jefixtotéž cocheckplus zápis, a cofixneopraví, ohlásí stejně jakocheck. - Priority sniffů neexistují; pravidla běží do ustálení, proč.
- Komentáře
phpcs:ignore,phpcs:disable,phpcs:enable,phpcs:ignoreFilea@phpcsSuppressfungují dál, i se jmény sniffů. Přepis nadresscode:*je jeden příkaz a je dobrovolný. - Vlastní sniff se nepřenáší, přepisuje; strom z něj obvykle udělá zlomek délky. Návod je na samostatné stránce.