Nette Documentation Preview

syntax
Řešení potíží
*************

.[perex]
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 |suppressing#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`, `log` a všechny adresáře začínající tečkou; k tomu `excludePaths` každé vrstvy. Pozor, `excludePaths` jen přidávají, žádná vrstva je nezruší.
- **Pravidlo není zapnuté.** `dresscode rules` ukáže hvězdičku u zapnutých. Pravidlo, které není v presetu, se zapíná v `rules`.
- **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-cache` pro jistotu.
- **Potlačení v kódu.** `dresscode:ignore` a `phpcs:ignore` platí i pro opravy; `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 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` |migration].

**`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 |gap-rules].

**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 |editors]. 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"`.

Ř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, log a všechny adresáře začínající tečkou; k tomu excludePaths každé vrstvy. Pozor, excludePaths jen přidávají, žádná vrstva je nezruší.
  • Pravidlo není zapnuté. dresscode rules ukáže hvězdičku u zapnutých. Pravidlo, které není v presetu, se zapíná v rules.
  • 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-cache pro jistotu.
  • Potlačení v kódu. dresscode:ignore a phpcs:ignore platí i pro opravy; 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 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".