Nette Documentation Preview

syntax
Editory a IDE
*************

.[perex]
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:

1. **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.
2. **Podtržení porušení** přímo v kódu, se zprávou a jménem pravidla v bublině.
3. **Oprava jednoho porušení** z nabídky rychlých oprav, ne celého souboru.
4. **Potlačení jedním klikem**, které vloží `dresscode:ignore` se 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í:

```shell
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í:

```json
{
	"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.

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:

  1. 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.
  2. Podtržení porušení přímo v kódu, se zprávou a jménem pravidla v bublině.
  3. Oprava jednoho porušení z nabídky rychlých oprav, ne celého souboru.
  4. Potlačení jedním klikem, které vloží dresscode:ignore se 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.