Ř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, log a všechny adresáře začínající tečkou, k tomu excludePaths z 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 rules označí hvězdičkou ta, která platí. Pravidlo, které není v presetu, se zapíná v klíči rules.
  • 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:ignore i phpcs:ignore platí i pro opravu, a dresscode:disable bez enable platí 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".

verze: 1.0