PavelZanek.com
build Nástroje

Larastan

Larastan používám jako způsob, jak dostat do Laravel projektu statickou analýzu, která rozumí Eloquentu, facades i dynamickým částem frameworku. Nejde o nástroj, který by nahradil testy nebo review, ale umí včas upozornit na typové chyby, špatné návratové hodnoty a drobné problémy, které by jinak vyšly najevo až za běhu aplikace.

Larastan

Larastan je jeden z těch nástrojů, které nejsou na první pohled efektní, ale v dlouhodobé údržbě projektu udělají hodně práce. Nezrychlí klikání v administraci, nepřidá novou viditelnou funkci a klient si ho nejspíš nikdy nevšimne. Přesto může výrazně ovlivnit, jak jistě se člověk v Laravel aplikaci pohybuje.

Laravel je dynamický framework. Eloquent modely, facades, kolekce, service container a magické metody jsou pohodlné, ale běžná statická analýza se v nich snadno ztratí. Larastan stojí nad PHPStanem a přidává mu znalost Laravel ekosystému. Díky tomu umí upozornit na problémy, které by čistý PHPStan buď neviděl, nebo by je vyhodnotil příliš obecně.

Proč statickou analýzu řešit

U menší aplikace se může zdát, že stačí testy a ruční kontrola. Jenže čím déle projekt žije, tím víc se objevují drobné nesrovnalosti: metoda může vracet něco jiného, než se očekává, kolekce obsahuje jiný typ objektu, relation je pojmenovaná jinak, než si vývojář myslí, nebo se někde předává nullable hodnota do místa, které s ní nepočítá.

Larastan pomáhá tyhle věci zachytit dřív. Nečeká na to, až chyba spadne v produkci nebo až ji někdo náhodou trefí v testu. Projde kód a snaží se ukázat místa, kde typy, návratové hodnoty nebo volání metod nedávají smysl. Není to náhrada testů. Je to další vrstva kontroly, která doplňuje testy úplně jiným způsobem.

Laravel bez falešného klidu

Největší přínos Larastanu je podle mě v tom, že nenutí vývojáře ignorovat realitu Laravelu. Standardní PHP analýza může být u frameworků s dynamickým chováním buď příliš slabá, nebo naopak hlučná. Larastan rozumí modelům, facades, service containeru a dalším částem frameworku lépe, takže dokáže dávat smysluplnější výsledky.

To neznamená, že stačí nástroj nainstalovat a všechno je vyřešené. U starší aplikace může první spuštění ukázat hodně problémů. Některé budou skutečné chyby, jiné jen místa, kde kód nemá dostatečné typy nebo dokumentaci. Přínos není v tom, že projekt okamžitě projde na nejvyšší úroveň. Přínos je v tom, že člověk začne vidět, kde je codebase nejasná.

Postupné zpřísňování

Larastan bych zaváděl postupně. U existujícího projektu není dobrý cíl zapnout nejpřísnější režim a strávit týden hašením tisíců hlášek. Lepší je nastavit úroveň, která je zvládnutelná, opravit největší problémy a teprve potom laťku posouvat dál. Statická analýza má pomáhat vývoji, ne vytvořit další zdroj frustrace.

Dobře funguje i pravidlo, že nový kód by už neměl přidávat další problémy. Starší dluh se dá řešit postupně, ale pipeline může hlídat, aby se nezvětšoval. V kombinaci s PHPDoc, generiky u kolekcí, přesnějšími návratovými typy a lepší strukturou služeb začne Larastan rychle ukazovat hodnotu.

Kam zapadá v procesu

Největší smysl mi Larastan dává v CI vedle testů, Pint, Rectoru a dalších kontrol. Testy ověřují chování, Pint styl, Rector mechanické refaktoringy a Larastan typovou a strukturální konzistenci. Každý z těchto nástrojů hlídá jinou část problému. Dohromady dávají vývojáři větší jistotu, že změna není jen zelená lokálně, ale obstojí i v širším kontextu projektu.

U AI asistovaného vývoje je to ještě důležitější. Agent může vygenerovat kód, který vypadá přesvědčivě, ale typově nesedí nebo používá metodu, která ve skutečnosti neexistuje. Larastan takové věci často odhalí rychleji než člověk při čtení diffu. Pořád je potřeba úsudek a review, ale statická analýza zmenšuje prostor pro tiché chyby, které by jinak prošly až příliš daleko.

add_circle Chybí tu nástroj?

Navrhněte nástroj do výpisu

Pokud jste nenašli užitečný nástroj, pošlete mi jeho název a URL. Zkontroluji ho a případně doplním do veřejného katalogu.

alternate_email

Zůstaňme v kontaktu

Odebírejte novinky ze světa Laravelu a infrastruktury přímo do své schránky.