Přechod z PHP_CodeSniffer a Slevomatu
Převod phpcs.xml na konfiguraci DressCode, příkazy phpcs a phpcbf
nahrazené příkazy check a fix, jiné exit kódy a přehled toho, co odpovídá čemu.
Než začnete
Projděte si společný postup: kód a komentáře můžete nechat,
jak jsou, konfiguraci převede import a 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 ho
import přečte i tehdy, když už jsou PHP_CodeSniffer i Slevomat odinstalované.
Převod konfigurace
dresscode import phpcs.xml > dresscode.php
Sady PSR1, PSR2 a PSR12 se překládají na preset dresscode/psr12.
Jednotlivé sniffy (pravidla PHP_CodeSniffer) se překládají jménem, a kde má vlastnost z <properties>
protějšek, tak i s ní: Generic.Files.LineLength s lineLimit je dresscode/line-length
s volbou 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 vypněte v klíči
rules hodnotou false. Sniff bez protějšku skončí ve výpisu na chybovém výstupu; typicky jde
o sniffy o dokumentačních komentářích z balíku Squiz.Commenting a o sniffy, které hlídají totéž co
jiný sniff, jen jinými slovy.
Co v phpcs.xml není pravidlo a přepíšete to ručně:
<file>a<exclude-pattern>do klíčůpathsaexcludePaths; vzory popisuje Konfigurace.<arg name="extensions">do klíčefileExtensions.<config name="php_version">není potřeba, cílovou verzi si DressCode přečte zcomposer.json.<arg name="tab-width">a odsazení řeší preset, nebo klíčstyle.
Slevomat: jeho sniffy, které DressCode pokrývá, se přeloží jménem jako každé jiné. Jeho pomocné třídy ani
nastavení installed_paths tu 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 na terminálu ukazuje sám |
.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 porušení šlo opravit, řekne shrnutí a formát json. Skript, který exit kód vyhodnocuje, potřebuje jednu
úpravu.
Co je jinak
- Jeden nástroj na kontrolu i opravu.
phpcsaphpcbfbyly dva příkazy, které se občas neshodly, protože oprava mohla odhalit další porušení. Tady jefixtotéž cocheckplus zápis, a cofixneopraví, ohlásí stejně jakocheck. - Priority sniffů neexistují, pravidla běží opakovaně do ustálení; proč.
- Komentáře
phpcs:ignore,phpcs:disable,phpcs:enable,phpcs:ignoreFilea@phpcsSuppressfungují dál, a to i se jmény sniffů. Přepis nadresscode:*je jeden příkaz a je dobrovolný. - Vlastní sniff se nepřenáší, ale přepisuje; nad stromem z něj obvykle zbude zlomek délky. Návod je na samostatné stránce.