Vydání PHPStan 1.0, statického analyzátoru pro kód v jazyce PHP.

Po šesti letech vývoje byl vydán první stabilní release statického analyzátoru PHPStan 1.0, který umožňuje nalézt chyby v kódu v jazyce PHP bez jeho provedení a používání unit-testů. Kód projektu je napsán v PHP a je šířen pod licencí MIT.

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

  • Základní kontroly, definice neznámých tříd, funkcí a metod ($this), nedefinovaných proměnných a také předávání nesprávného počtu argumentů.
  • Zjištění pravděpodobně nedefinovaných proměnných, neznámých magic metod a vlastností tříd s __call a __get.
  • Zjištění neznámých metod ve všech výrazech, bez omezení na volání přes $this. Kontrola PHPDocs.
  • Kontrola typů vrácení a přidělení typů vlastnostem.
  • Základní zjištění 'mrtvého' (nikdy nevolaného) kódu. Zjištění volání instanceof, které vždy vracejí hodnotu false, nikdy nevyhodnocovaných bloků 'else' a kódu, který se nachází po return.
  • Kontrola typů argumentů předávaných do metod a funkcí.
  • Varování o absenci anotací s informacemi o typech.
  • Varování o nesprávných union-typech, které definují kolekce ze dvou a více typů.
  • Varování o volání metod a přístupu k vlastnostem s typy 'nullable'.
  • Kontrola použití typu 'mixed'.

    Příklady zjišťovaný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 vracení dat metodou se stejným typem, jaký je definován ve výrazu return.
    • Existence a viditelnost vlastností, ke kterým se provádí přístup, a rovněž kontrola deklarovaných a skutečných typů dat používaných ve vlastnostech.
    • Správnost počtu parametrů předaných do volání sprintf/printf v bloku formátování řetězců.
    • Existence proměnných s ohledem na bloky, které tvoří operátory větvení a cykly.
    • Zbytečné přetypování (např. '(string) ‘foo’') a přísné kontroly ('===' a '!==') dat s různými typy a operandy, které vždy vracejí hodnotu false.

    Klíčové novinky PHPStan 1.0:

    • Byl zaveden kontrolní úroveň „9“, která provádí kontroly použití typu „mixed“, určeného pro zpracování parametrů s různými typy. Devátá úroveň odhaluje nebezpečné zpracování typu „mixed“, jako je předání hodnot s typem „mixed“ jinému typu, volání metod s typem „mixed“ a přístup k jeho vlastnostem, protože nemusí existovat.
    • Správa kontroly identity vracených hodnot pro shodné volání funkcí s použitím anotací @phpstan-pure a @phpstan-impure.
    • Analýza typů v konstrukcích try-catch-finally s použitím anotací @throws.
    • Odhalení určitých, ale nepoužívaných interních (private) vlastností, metod a konstant.
    • Předání nekompatibilních callbackových volání do funkcí pro práci s poli, jako jsou array_map a usort.
    • Inspekce typů pro chybějící typehint anotace.
    • Zajištěna kompatibilita popisů typů s PHPDocs, což umožňuje používat v PHPDocs typy z chybových hlášení.

    Zdroj: opennet.ru

  • Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster