Vydání PHPStan 1.0, statického analyzátoru kódu PHP

Po šesti letech vývoje došlo k prvnímu stabilnímu vydání statického analyzátoru PHPStan 1.0, který umožňuje najít chyby v PHP kódu bez jeho spouštění a pomocí unit testů. Kód projektu je napsán v PHP a distribuován pod licencí MIT.

Analyzátor poskytuje 10 úrovní kontroly, ve kterých každá následující úroveň rozšiřuje možnosti předchozí a poskytuje přísnější kontroly:

  • Základní kontroly, definování neznámých tříd, funkcí a metod ($this), nedefinované proměnné a předávání špatného počtu argumentů.
  • Identifikace možná nedefinovaných proměnných, neznámých magických metod a vlastností tříd pomocí __call a __get.
  • Detekce neznámých metod ve všech výrazech, neomezená na volání přes $this. Kontrola PHPDocs.
  • Kontrola návratových typů a přiřazení typů vlastnostem.
  • Základní identifikace „mrtvého“ (nikdy nevolaného) kódu. Identifikujte instanceof volání, která vždy vrátí hodnotu false, „jiné“ bloky, které se nikdy nespustí, a kód po návratu.
  • Kontrola typů argumentů předávaných metodám a funkcím.
  • Upozornění na chybějící anotace s informacemi o typu.
  • Upozornění na nesprávné typy sjednocení, které definují kolekce dvou nebo více typů.
  • Upozornění na volání metod a přístup k vlastnostem s typy "nullable".
  • Kontrola použití "smíšeného" typu.

    Příklady zjištěných základních problémů:

    • Existence tříd používaných v instanceof, catch, typehints a dalších jazykových konstrukcích.
    • Existence a dostupnost volaných metod a funkcí, stejně jako počet předávaných argumentů.
    • Kontrola, zda metoda vrací data stejného typu, jak je definováno ve výrazu return.
    • Existence a viditelnost vlastností, ke kterým se přistupuje, a kontrola deklarovaných a skutečných datových typů použitých ve vlastnostech.
    • Počet parametrů předávaných voláním sprintf/printf v bloku formátování řetězce je správný.
    • Existence proměnných beroucích v úvahu bloky tvořené větvenými operátory a smyčkami.
    • Zbytečné přetypování typu (např. "(string) 'foo'") a přísné testy ("===" a "!==") na datech s různými typy a operandy, které vždy vrátí hodnotu false.

    Klíčové inovace v PHPStan 1.0:

    • Byla implementována úroveň kontroly „9“, která kontroluje použití „smíšeného“ typu, určeného pro organizaci příjmu parametrů s různými typy funkcí. Úroveň XNUMX identifikuje nebezpečné použití „smíšeného“, jako je předávání hodnot typu „smíšené“ jinému typu, volání metod typu „smíšené“ a přístup k jeho vlastnostem, protože nemusí existovat.
    • Pomocí anotací @phpstan-pure a @phpstan-impure zkontrolujte, zda jsou návratové hodnoty identické pro identická volání funkcí.
    • Typ analýzy v konstrukcích try-catch-finally pomocí anotací @throws.
    • Identifikace definovaných, ale nepoužívaných interních (soukromých) vlastností, metod a konstant.
    • Předávání nekompatibilních zpětných volání funkcím pole, jako je array_map a usort.
    • Kontrola typu pro chybějící typografické poznámky.
    • Vytvořené deklarace typů kompatibilní s PHPDocs, což umožňuje použití typů z chybových zpráv v PHPDocs.

    Zdroj: opennet.ru

  • Přidat komentář