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> do paths a excludePaths; vzory jsou popsané v Konfiguraci.
  • <arg name="extensions"> do fileExtensions.
  • <config name="php_version"> není potřeba: verze se čte z composer.json.
  • <arg name="tab-width"> a odsazení řeší preset nebo style.

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. phpcs a phpcbf byly dva příkazy s občas různým výsledkem, protože oprava mohla odhalit další porušení. Tady je fix totéž co check plus zápis, a co fix neopraví, ohlásí stejně jako check.
  • Priority sniffů neexistují; pravidla běží do ustálení, proč.
  • Komentáře phpcs:ignore, phpcs:disable, phpcs:enable, phpcs:ignoreFile a @phpcsSuppress fungují dál, i se jmény sniffů. Přepis na dresscode:* 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.
verze: 1.0