Editory a IDE: PhpStorm a VS Code
Porušení podtržená přímo v kódu, oprava jedním klikem a formátování při uložení. Co nainstalovat, co naopak vypnout a co se stane s rozepsaným kódem, který zrovna nejde přeložit.
Co integrace umí
Nástroj, který běží jen v průběžné integraci, je poloviční užitek: o porušení se dozvíte až po pushi a opravujete ho v jiném rozpoložení, než jste kód psali. Integrace do editoru umí čtyři věci a v tomhle pořadí jsou i užitečné:
- Formátování při uložení. Soubor se po uložení opraví tak, jak by ho opravil
dresscode fix. Zdaleka nejužitečnější věc a stačí na ni i editor bez jakéhokoli rozšíření, viz níže. - Podtržení porušení přímo v kódu, se zprávou a jménem pravidla v bublině.
- Oprava jednoho porušení z nabídky rychlých oprav, ne celého souboru najednou.
- Potlačení jedním klikem, které na správný řádek vloží
dresscode:ignorese jménem pravidla.
Pod tím vším běží jeden jazykový server, dresscode lsp, který je součástí balíku. Díky tomu se
editory chovají stejně a totéž dostane každý, kdo mluví protokolem Language Server Protocol: Neovim, Zed, Helix
i Sublime Text.
Jazykový server
Server spouští plugin nebo rozšíření editoru samo; nastavovat ho musíte jen tehdy, když DressCode neleží ve
vendor/bin projektu. Kdo ho zapojuje do editoru, pro který hotová integrace není, spustí:
dresscode lsp
Server komunikuje přes standardní vstup a výstup, konfiguraci projektu čte stejně jako příkazová řádka a soubory drží v paměti, takže se při každém uložení neplatí start PHP. Neuložený obsah bere z editoru, ne z disku.
PhpStorm
Nainstalujte plugin DressCode z marketplace. Po instalaci si vendor/bin/dresscode v projektu najde sám;
porušení se podtrhnou jako inspekce, Alt+Enter nabídne opravu nebo potlačení a v nastavení pluginu zapnete
opravu při uložení.
Zároveň vypněte vestavěné formátování PHP (Settings › Tools › Actions on Save › Reformat code), jinak se oba formátovače přetahují a soubor se při každém uložení změní dvakrát.
I bez pluginu funguje File Watcher (Settings › Tools › File Watchers): typ souboru PHP, program
$ProjectFileDir$/vendor/bin/dresscode, argumenty fix $FilePath$ -f bare, pracovní adresář
$ProjectFileDir$. Formát bare vypíše jen porušení, která zůstala na vás, a u přepsaného
souboru řádek rewritten, takže u čistého souboru watcher mlčí.
Visual Studio Code
Nainstalujte rozšíření DressCode z marketplace. Podtrhávání funguje hned, formátování při uložení zapnete v nastavení:
{
"editor.formatOnSave": true,
"[php]": {
"editor.defaultFormatter": "dresscode.dresscode"
}
}
Jiný formátovač PHP (třeba Intelephense) přitom vypněte, nebo mu nechte jen to, co DressCode neřeší. Bez rozšíření
udělá totéž rozšíření Run on Save s příkazem vendor/bin/dresscode fix ${file} -f bare.
Rozepsaný a rozbitý kód
Během psaní je soubor půl vteřiny syntakticky rozbitý. Server v takové chvíli nehlásí záplavu chyb: ukáže jedinou, syntaktickou, na místě, kde parser skončil, a podtržení z posledního platného stavu nechá být. Oprava při uložení se nad souborem, který nejde parsovat, neprovede vůbec: radši neopravený soubor než zmrzačený.
Totéž platí o každé opravě. DressCode zapíše jen výsledek, který se znovu naparsuje a vytiskne na totéž. Je to týž round trip, tedy zaručená shoda vytištěného stromu s původním souborem, na které stojí celý nástroj. V editoru je z něj pojistka, že formátování při uložení nemůže soubor rozbít.