Při vývoji našich aplikací již mnoho let využíváme automatické testování. E2E testy a integrační testy nám usnadňují návrh aplikace a pomáhají předcházet opakovaným a zavlečeným chybám. Unit testy pak usnadňují vývoj a umožňují rychle zkontrolovat aplikaci bez složitého procházení. Nutnost psát testy vede programátory k návrhu lepšího a čistšího kódu.
S příchodem PHP verze 7 se objevil nástroj pro statickou analýzou kódu PHPStan, který posunul efektivitu našeho vývoje o další úroveň. PHPStan přibližuje vývoj v PHP kompilovaným jazykům. Umožňuje odhalit mnoho chyb bez nutnosti spouštět napsaný kód. Moderní IDE dokáží být v mnohém nápomocna, ovšem PHPStan jde ještě dál.
Pro využití tohoto nástroje, musí být aplikace napsaná minimálně v PHP 7.1. Čím silnější typovost využíváte, tím kvalitnější výstupy získáte. U již napsaných aplikací lze začít na nižší úrovni kontroly a postupným refactoringem se dopracovat k nejpřísnějšímu režimu. U nových aplikací vždy využíváme nejpřísnější režim.
Co nám tedy tento nástroj přináší?
- Vede programátory k psaní čistšího a typově striktnějšího kódu.
- Umožňuje bleskovou kontrolu během vývoje bez nutnosti spouštění kódu.
- Přidává další úroveň kontroly při code review a testování.
- Výhodně doplňuje automatické testy.
Za dobu existence vzniklo mnoho rozšíření pro použití s nejznámějšími frameworky a knihovnami. U nás využíváme především oficiální rozšíření pro Nette. K dispozici jsou také doplňkové sady pravidel. Za zmínku stojí například rozšíření od Michala Špačka kontrolující potenciálně nebezpečná volání funkcí.
Použití nástroje je velice jednoduché. Stačí přidat pomocí Composeru
composer require --dev phpstan/phpstan
a spustit
vendor/bin/phpstan analyse srcFolder
Pokud PHPStan ještě nepoužíváte, určitě ho zkuste a zbavte se všech překlepů, neplatných typů či nesmyslných podmínek ještě dřív, než spustíte vaši aplikaci.