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.