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
  • check ohlásí porušení a nic nezapíše.
  • fix opraví, 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ý.
  • rules vypíš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.
  • import převede konfiguraci PHP CS Fixeru nebo PHP_CodeSniffer, viz Přechod na DressCode.
  • migrate-suppressions přepíše komentáře phpcs:* na dresscode:*, viz tamtéž.
  • lsp spustí 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á.

verze: 1.0