Editory a IDE
Porušení podtržená v PhpStormu a VS Code, oprava jedním klikem a formátování při uložení. Co zapnout, co vypnout a co se stane s rozepsaným kódem.
Co integrace umí
Nástroj, který běží jen v CI, je poloviční užitek: o porušení se dozvíte až po pushi a opravujete ho v jiném kontextu, než jste kód psali. Rozšíření pro editor dělá čtyři věci a v tomhle pořadí je i používám:
- 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ší a stačí na něj i editor bez 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.
- Potlačení jedním klikem, které vloží
dresscode:ignorese jménem pravidla na správný řádek.
Pod obojím rozšířením běží jeden jazykový server, dresscode lsp, který je součástí balíku. Díky
tomu se rozšíření chovají stejně a totéž dostane každý editor, který mluví Language Server Protocolem: Neovim, Zed,
Helix, Sublime Text.
Jazykový server
Server spouští rozšíření samo; nastavení potřebuje jen tehdy, když DressCode neleží ve vendor/bin
projektu. Kdo ho zapojuje do editoru bez hotového rozšíření, spustí:
vendor/bin/dresscode lsp
Server komunikuje přes standardní vstup a výstup, čte konfiguraci projektu stejně jako příkazová řádka a soubory drží v paměti, takže neplatí studený start PHP při každém uložení. Neuložený obsah bere z editoru, ne z disku.
PhpStorm
Nainstalujte plugin DressCode z marketplace. Po instalaci najde vendor/bin/dresscode v projektu sám;
porušení se podtrhnou jako inspekce, Alt+Enter nabídne opravu porušení nebo jeho potlačení, a v nastavení
pluginu zapnete opravu při uložení.
Vypněte přitom vestavěné formátování PhpStormu pro 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.
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 řádek
rewritten u přepsaného souboru, takže výstup watcheru je při čistém souboru prázdný.
Visual Studio Code
Nainstalujte rozšíření DressCode z marketplace. Podtržení funguje hned; formátování při uložení zapnete v nastavení:
{
"editor.formatOnSave": true,
"[php]": {
"editor.defaultFormatter": "dresscode.dresscode"
}
}
Jiný formátovač pro PHP (třeba Intelephense) při tom vypněte, nebo ho nechte jen na 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 té 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í pro každou opravu: DressCode zapíše jen výsledek, který znovu parsuje a vytiskne stejně. Je to týž round-trip, na kterém stojí celý nástroj, a v editoru je to pojistka, že formátování při uložení nemůže soubor rozbít.