Řešení potíží
Co znamená hlášení o cyklu pravidel nebo o porušeném kontraktu, proč je najednou všechno čisté, a co dělat, když se DressCode přetahuje s formátovačem v editoru.
Proč je čisto
Běh skončil OK a vy víte, že by neměl. Podle shrnutí a hlavičky poznáte, proč:
OK 36 violations in the baseline: porušení jsou, ale baseline je zná. Regenerujte ji, nebo ji z konfigurace odeberte.- Soubor není v rozsahu. Hlavička říká, kolik souborů se kontroluje. Výchozí vyloučené cesty jsou
vendor,node_modules,temp,tmp,loga všechny adresáře začínající tečkou; k tomuexcludePathskaždé vrstvy. Pozor,excludePathsjen přidávají, žádná vrstva je nezruší. - Pravidlo není zapnuté.
dresscode rulesukáže hvězdičku u zapnutých. Pravidlo, které není v presetu, se zapíná vrules. - Pravidlo se vynechalo kvůli verzi PHP. Pravidlo pro novější syntaxi se pod cílovou verzí projektu samo vypne;
když jste ho zapnuli jménem, běh o tom vypíše varování. Cílovou verzi ukazuje hlavička
(
Target PHP 8.2 from composer.json). - Cache. Soubor se stejným obsahem pod stejnou konfigurací se přeskočí. Konfigurace je součást klíče, takže
její změna cache zneplatní sama;
--no-cachepro jistotu. - Potlačení v kódu.
dresscode:ignoreaphpcs:ignoreplatí i pro opravy;dresscode: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 dát na příkazovou
řádku; s ním stačí 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 se píší jména pravidel DressCode; cizí jméno hláška přeloží, celý cizí soubor přeloží import.
Unknown rule 'acme/foo'. Překlep, nebo pravidlo z pluginu, který není v extensions, ani
není zapsaný názvem třídy.
Rules acme/one, acme/two do not converge in src/Cart.php. Dvě pravidla se přetahují: jedno změní kód,
druhé ho vrátí, a strom se dostal do stavu, ve kterém už byl. Engine to pozná a soubor ohlásí jako selhání (exit kód
2), nic do něj nezapíše. Vestavěná pravidla se nekříží; hláška tedy ukazuje na vlastní pravidlo nebo
plugin a jmenuje viníky. Do vyřešení jedno z nich vypněte.
Varování o pravidle, které změnilo kód bez ohlášení (nebo po potlačeném hlášení). Pravidlo porušilo
kontrakt: každá změna stromu musí následovat po report(), který vrátil true. Vestavěná pravidla
to hlídá RuleTester; u vlastního pravidla je to chyba v něm, a --strict-rules z varování
udělá chybu, aby v testech neprošla.
Chyba konfigurace o dvou pravidlech, která nárokují tutéž mezeru. Dvě pravidla o mezerách chtějí rozhodovat o téže složce téže mezery; engine to odmítne při startu, protože jinak by výsledek závisel na pořadí. Nastává jen s pluginy; viz Pravidla o mezerách.
Soubor se syntaktickou chybou se vypíše s řádkem chyby a exit kód je 1, stejně jako u porušení.
DressCode ho neopravuje a nepřeskakuje mlčky: kód, který PHP nepřijme, není nic, na čem by se dal měřit styl.
Warning: 3 entries of the baseline no longer match a violation; regenerate it Někdo opravil porušení,
které baseline zná. Nic se neděje, jen baseline přestává být pravdivá; vygenerujte ji znovu.
Editor a formátování
Když se soubor po každém uložení změní dvakrát, přetahují se dva formátovače. Vypněte vestavěný formátovač 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, že běží nad kořenem projektu s konfigurací: hledá ji od adresáře souboru nahoru, a otevřený podadresář bez konfigurace znamená 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 zachovat konce řádků tak, jak jsou, nastaví
eol: auto; projekt na Windows s Gitem, který konce řádků převádí, má nechat převod Gitu a DressCode dát
"\n".