Řešení potíží
Proč je najednou všechno čisté, co znamenají hlášky o zacyklení pravidel nebo o porušeném kontraktu a co dělat, když se DressCode přetahuje s formátovačem v editoru.
Proč je čisto, i když nemá být
Běh skončil s OK a vy víte, že by neměl. Odpověď najdete v hlavičce a ve shrnutí:
OK 36 violations in the baseline: porušení tam jsou, ale baseline je zná. Vygenerujte ji znovu, nebo ji z konfigurace odeberte.- Soubor není v rozsahu kontroly. Hlavička říká, kolik souborů se kontroluje. Ve výchozím stavu jsou vyloučené
vendor,node_modules,temp,tmp,loga všechny adresáře začínající tečkou, k tomuexcludePathsz každé vrstvy. Pozor na to, že se vyloučené cesty jen sčítají a žádná vrstva je nemůže zrušit. - Pravidlo není zapnuté.
dresscode rulesoznačí hvězdičkou ta, která platí. Pravidlo, které není v presetu, se zapíná v klíčirules. - Pravidlo se vynechalo kvůli verzi PHP. Pravidlo pro novější syntaxi se pod cílovou verzí projektu samo vypne, a
pokud jste ho zapnuli jménem, běh o tom napíše varování. Cílovou verzi ukazuje hlavička jako
Target PHP 8.2 from composer.json. - Cache. Soubor se stejným obsahem a stejnou konfigurací se přeskočí. Konfigurace je součástí klíče, takže
její změna cache zneplatní sama; pro jistotu pomůže
--no-cache. - Potlačení v kódu.
dresscode:ignoreiphpcs:ignoreplatí i pro opravu, adresscode:disablebezenableplatí až do konce souboru.
Hlášky, které stojí za vysvětlení
No paths given and none configured. Bez konfiguračního souboru musíte cesty zadat na příkazové
řádce; se souborem stačí klíč paths.
Unknown rule 'no_unused_imports'. It is covered by dresscode/unused-imports; run dresscode import to translate a configuration of another tool.
Do konfigurace patří jména pravidel DressCode. Cizí jméno hláška rovnou přeloží, celý cizí konfigurační soubor
převede příkaz import.
Unknown rule 'acme/foo'. Buď překlep, nebo pravidlo z rozšíření, které není uvedené v klíči
extensions ani zapsané názvem třídy.
Rules acme/one, acme/two do not converge in src/Cart.php. Dvě pravidla se přetahují: jedno kód změní,
druhé ho vrátí zpátky, a strom se tak dostal do stavu, ve kterém už jednou byl. Jádro to pozná, soubor ohlásí jako
selhání (exit kód 2) a nic do něj nezapíše. Vestavěná pravidla se nekříží, takže hláška ukazuje na
vlastní pravidlo nebo na rozšíření a jmenuje obě strany sporu. Než to vyřešíte, jedno z nich vypněte.
Varování o pravidle, které změnilo kód bez ohlášení (nebo po potlačeném hlášení) znamená, že pravidlo
porušilo kontrakt: každá změna stromu musí následovat až po volání report(), které vrátilo
true. U vestavěných pravidel to hlídá RuleTester, u vlastního pravidla je to chyba v něm.
Přepínač --strict-rules z takového varování udělá chybu, aby neproklouzlo testy.
Chyba konfigurace o dvou pravidlech, která chtějí rozhodovat o téže mezeře. Dvě pravidla pro bílé znaky si nárokují totéž místo; jádro to odmítne hned při startu, protože jinak by výsledek závisel na pořadí. Stát se to může jen s rozšířením.
Soubor se syntaktickou chybou se vypíše s číslem řádku a exit kód je 1, stejně jako u porušení.
DressCode ho neopravuje, ale ani mlčky nepřeskočí: na kódu, který PHP nepřijme, se styl měřit nedá.
Warning: 3 entries of the baseline no longer match a violation; regenerate it znamená, že někdo opravil
porušení, které baseline zná. Nic se neděje, jen baseline přestala odpovídat skutečnosti; vygenerujte ji znovu.
Editor a formátování
Když se soubor po každém uložení změní dvakrát, přetahují se v něm dva formátovače. Vypněte vestavěné formátování PHP v PhpStormu nebo výchozí formátovač pro PHP ve VS Code, jak popisuje stránka Editory a IDE.
Když DressCode v editoru zdánlivě nic nedělá, zkontrolujte, jestli běží nad kořenem projektu s konfigurací. Hledá ji od adresáře souboru směrem nahoru, takže otevřený podadresář bez konfigurace znamená, že platí výchozí preset.
Konce řádků
Hlášení Wrong line ending znamená, že konfigurace nebo preset předepisuje pevný konec řádku
(eol: "\n") a soubor má jiný. Projekt, který chce konce řádků zachovat tak, jak jsou, nastaví
eol: auto. Projekt na Windows, kde konce řádků převádí Git, má převod nechat na Gitu a v DressCode nastavit
"\n".