Příkazová řádka
Příkazy check a fix, výpis pravidel, převod cizí konfigurace, všechny
přepínače, formáty výstupu pro terminál i pro CI, exit kódy, cache a paralelní běh.
Příkazy
dresscode check [cesty...]
dresscode fix [cesty...]
dresscode rules
dresscode import <soubor>
dresscode migrate-suppressions [cesty...]
dresscode lsp
checkohlásí porušení a nic nezapíše.fixopraví, co pravidla umějí, a zbytek ohlásí. Soubor se zapíše jen tehdy, když se změnil a výsledek se znovu naparsuje na totéž; soubor se syntaktickou chybou nebo s pravidlem, které selhalo, zůstane nedotčený.rulesvypíše všechna známá pravidla: hvězdičkou označí ta, která v aktuální konfiguraci platí, a u každého uvede fázi, popis a jména pravidel jiných nástrojů, která pokrývá. Hodí se, když hledáte, jak se co jmenuje.importpřevede konfiguraci PHP CS Fixeru nebo PHP_CodeSniffer, viz Přechod na DressCode.migrate-suppressionspřepíše komentářephpcs:*nadresscode:*, viz tamtéž.lspspustí jazykový server pro editory.
Cesty jsou soubory nebo adresáře relativně k aktuálnímu adresáři a mají přednost před klíčem paths
z konfigurace. Bez cest i bez konfiguračního souboru příkaz skončí chybou, protože nechce hádat, co má kontrolovat.
Přepínače
| přepínač | význam |
|---|---|
-c, --config <soubor> |
konfigurační soubor místo nejbližšího dresscode.neon nebo dresscode.php |
-f, --format <název> |
formát výstupu, viz níže |
--diff |
u check ukáže, co by fix změnil; u fix to, co změnil |
--preset <název> |
přidá preset; lze uvést vícekrát |
--rule <název>=on nebo =off |
zapne nebo vypne pravidlo pro tenhle běh; lze uvést vícekrát |
--stdin <cesta> |
čte kód ze standardního vstupu, jako by to byl soubor na dané cestě; fix pak opravený kód vypíše na
standardní výstup |
--generate-baseline |
zapíše nalezená porušení do baseline místo
hlášení; jen u check |
--no-cache |
zpracuje každý soubor, i ten, o kterém se ví, že je čistý |
--jobs <n> |
počet pracovních procesů; 1 znamená běh v jediném procesu |
--strict-rules |
pravidlo, které poruší svůj kontrakt, je chyba, ne varování; pro vývoj vlastních pravidel |
--no-color |
výstup bez barev |
--version, --help |
verze, nápověda |
Formáty výstupu
Přepínač --format volí celý tvar výstupu, ne jeho detail; formáty se nekombinují.
console je výchozí volba pro terminál: hlavička s konfigurací, cílovou verzí PHP a rozsahem kontroly, pak
jednotlivé soubory s porušeními (řádek, sloupec, zpráva, pravidlo) a nakonec shrnutí. Barvy se vypnou samy, jakmile
výstup nejde do terminálu.
github se zvolí sám, když běh probíhá jako krok GitHub Actions. Každé porušení je anotace, která se
ukáže přímo v diffu pull requestu.
bare je pro Git hooky a nástroje, které výstup čtou: bez hlavičky a bez shrnutí, jen porušení, která
zůstala na uživateli, ve stejném rozvržení jako console, a u každého přepsaného souboru řádek
rewritten. Čistý běh nevypíše vůbec nic.
src/Cart.php rewritten src/Order.php error 12:1 The line is 133 characters long, the limit is 120 line-length
json je strojově čitelný a jeho tvar se v minoritních verzích nemění: pole files
s porušeními (pravidlo, zpráva, řádek, sloupec, závažnost, zda je opravitelné, otisk), summary s počty a
warnings.
checkstyle je XML, kterému rozumí Jenkins, nástroj cs2pr a další nástroje pro CI.
Exit kódy
| kód | význam |
|---|---|
0 |
čisto; u fix také tehdy, když všechno opravil |
1 |
zůstala porušení, nebo soubor nejde parsovat |
2 |
selhání: špatná konfigurace, neznámé pravidlo, pravidlo, které vyhodilo výjimku nebo se s jiným zacyklilo |
Selhání jednoho souboru běh nezastaví: soubor se ohlásí jako selhavší, nic se do něj nezapíše a ostatní se zpracují dál.
Cache a paralelní běh
DressCode si pamatuje otisk obsahu každého souboru, který prošel čistě, a spolu s ním otisk konfigurace, cílové verze
PHP a verzí nainstalovaných balíčků. Soubor se stejným obsahem a stejnou konfigurací příště přeskočí; jakmile se
kterákoli z těch věcí změní, zpracuje ho znovu. Cache leží v systémovém dočasném adresáři, nebo tam, kam ukazuje
cacheDir v konfiguraci; --no-cache ji pro jeden běh obejde.
Soubory, které cache nepokryje, se rozdělí mezi pracovní procesy. Výchozí počet odpovídá počtu procesorů, nejvýš
však jeden proces na čtyři soubory, protože spuštění procesu něco stojí. --jobs 1 běží bez nich, což se
hodí při ladění vlastního pravidla, a --jobs 8 se vyplatí na stroji s mnoha jádry, kde by výchozí odhad byl
zbytečně nízký.
Standardní vstup
--stdin je rozhraní pro editory a hooky: obsah přijde na standardním vstupu, cesta říká, která pravidla pro
něj platí (podle ní se vyhodnotí výjimky pro cesty), a fix vrátí opravený kód na standardní výstup místo
toho, aby zapisoval do souboru:
git show :src/Cart.php | dresscode check --stdin src/Cart.php
Cache se u standardního vstupu nepoužívá.