Skip to content

PHP Stan

PHPStan je statický analyzátor kódu pro PHP, který se zaměřuje na hledání chyb v čas kompilace. Umožňuje vývojářům detekovat potenciální chyby ve svém kódu ještě před jeho spuštěním. Tento nástroj má schopnost zlepšovat kvalitu a robustnost kódu.

Klíčové vlastnosti

  • Statická analýza: Analyzuje kód bez jeho spuštění, což umožňuje detekci chyb, které by jinak byly odhaleny až během runtime.
  • Typová kontrola: PHPStan kontroluje typy proměnných a návratových hodnot funkcí, čímž napomáhá identifikovat chyby typu a zvyšuje bezpečnost kódu.
  • Konfigurovatelná úroveň přísnosti: Nabízí různá úrovně přísnosti kontroly, od základních kontrol po přísné typové a logické analýzy.
  • Integrace s CI/CD: Snadno se integruje do nepřetržité integrace a nasazení (CI/CD) procesů, což umožňuje detekci chyb v rámci automatizovaných buildů.
  • Rozšiřitelnost: PHPStan je rozšiřitelný pomocí rozšíření, která umožňují přidávat další pravidla a přizpůsobit analýzu specifickým potřebám projektu.

Použití

V example laravel project je phpstan.neon, který je jako ukázka, jak by měl být nastavený.

PHPStan Konfigurace

Tato konfigurace PHPStanu je navržena pro zajištění vysoké kvality a bezpečnosti kódu ve vašem projektu. Obsahuje několik klíčových komponent a pravidel pro detekci potenciálních problémů v kódu.

Obecné Nastavení

Level: Nastaveno na max, což představuje nejpřísnější úroveň analýzy. PHPStan na této úrovni hledá i velmi subtilní problémy v kódu, čímž pomáhá zajistit jeho vysokou kvalitu.

Důležité Inkluze

  • phpstan-baseline.neon: Slouží jako baseline, která ignoruje existující chyby, o kterých již víme, a zaměřuje se na nové problémy.
  • vendor/phpstan/phpstan:
    • phpstan-deprecation-rules: Obsahuje pravidla pro identifikaci zastaralých konstrukcí v kódu, což je důležité pro přípravu na aktualizace PHP a frameworku.
    • phpstan-phpunit: Podporuje analýzu testů napsaných s PHPUnit, čímž zajišťuje, že testovací kód dodržuje nejlepší praktiky.
    • phpstan-strict-rules: Poskytuje sadu přísných pravidel pro ještě hlubší kontrolu kódu, což pomáhá odhalovat potenciální chyby dříve.
  • vendor/spaze/phpstan-disallowed-calls: Obsahuje pravidla pro zakazování nebezpečných, nesprávných nebo nevhodně používaných volání funkcí a struktur v kódu.
    • disallowed-dangerous-calls: Zakazuje potenciálně nebezpečná volání funkcí.
    • disallowed-execution-calls: Zakazuje funkce pro exekuci škodlivého nebo nepředvídatelného kódu.
    • disallowed-insecure-calls: Blokuje funkce, které mohou představovat bezpečnostní riziko.
    • disallowed-loose-calls: Zakazuje funkce a přístupy kódování, které nejsou striktní a mohou vést k chybám.
  • vendor/thecodingmachine/phpstan-safe-rule: Jedná se o pravidlo pro zvýšení bezpečnosti kódu tím, že dává důraz na potenciálně nebezpečná místa a podporuje lepší praxi.

Používání

V composer.json máme základní používání phpstanu:

  • composer phpstan - Skenuje projekt a podle nastavení phpstan.neon a vypisuje chyby
  • composer phpstan:baseline - Přidá ignore errors do phpstan-baseline.neon, které jsou aktuálně v projektu. Dobré pro případy, kdy se zvyšuje skokově level, nebo se přidává další rozšíření, nebo se upgraduje php/framework verze.