Vydanie PHPStan 1.0, statického analyzátora pre kód v jazyku PHP

Po šiestich rokoch vývoja sa uskutočnil prvý stabilný release statického analyzátora PHPStan 1.0, ktorý umožňuje odhaľovať chyby v kóde napísanom v PHP bez jeho vykonávania a používania unit testov. Kód projektu je napísaný v PHP a je distribuovaný pod licenciou MIT.

Analyzátor poskytuje 10 úrovní kontroly, pričom každá nasledujúca úroveň rozširuje možnosti predchádzajúcej a poskytuje prísnejšie kontroly:

  • Základné kontroly, definícia neznámych tried, funkcií a metód ($this), nedefinovaných premenných, ako aj prenášania nesprávneho počtu argumentov.
  • Identifikácia pravdepodobne nedefinovaných premenných, neznámych magic metód a vlastností tried s __call a __get.
  • Identifikácia neznámych metód vo všetkých výrazoch, nielen pri volaní cez $this. Kontrola PHPDocs.
  • Kontrola návratových typov a priraďovania typov vlastnostiam.
  • Základná identifikácia "mŕtveho" (nikdy nevolaného) kódu. Identifikácia volaní instanceof, ktoré vždy vracajú hodnotu false, nikdy sa nespúšťajúcich blokov "else" a kódu nachádzajúceho sa po return.
  • Kontrola typov argumentov, ktoré sa prenášajú do metód a funkcií.
  • Upozornenie na absenciu anotácií s informáciami o typoch.
  • Upozornenie na nekorektné union typy, ktoré definujú kolekcie zo dvoch a viac typov.
  • Upozornenie na volania metód a prístup k vlastnostiam s typmi "nullable".
  • Kontrola použitia typu "mixed".

    Príklady identifikovaných základných problémov:

    • Existencia tried, ktoré sa používajú v instanceof, catch, typehints a iných jazykových konštrukciách.
    • Existencia a dostupnosť volaných metód a funkcií, ako aj počet prenášaných argumentov.
    • Kontrola, že metód vracia dáta so rovnakým typom, aký je definovaný vo výraze return.
    • Existencia a viditeľnosť vlastností, ku ktorým sa vykonáva prístup, ako aj kontrola deklarovaných a skutočných typov dát používaných vo vlastnostiach.
    • Správnosť počtu parametrov, ktoré sa prenášajú do volaní sprintf/printf v bloku formátovania reťazcov.
    • Existencia premenných s ohľadom na bloky vytvorené operátormi vetvenia a cyklami.
    • Nepoužiteľné pretypovania typov (napríklad "(string) 'foo'") a prísne kontroly ("===" a "!==") dát s rôznymi typmi a operandmi, ktoré vždy vracajú hodnotu false.

    Kľúčové novinky PHPStan 1.0:

    • Realizovaný úroveň kontroly „9“, ktorá vykonáva kontroly použitia typu „mixed“, určená na spracovanie parametrov s rôznymi typmi. Deviata úroveň odhaľuje nebezpečné praktiky používania „mixed“, ako je prenos hodnôt typu „mixed“ do iného typu, volanie metód s typom „mixed“ a prístup k jeho vlastnostiam, keďže nemusia existovať.
    • Riadenie kontroly identity vracaných hodnôt pre rovnaké volania funkcií s použitím anotácií @phpstan-pure a @phpstan-impure.
    • Analýza typov v konštrukciách try-catch-finally s použitím anotácií @throws.
    • Odhalenie určitých, ale nepoužívaných interných (private) vlastností, metód a konštánt.
    • Prenos nekompatibilných callback volaní do funkcií na prácu s poľami, ako sú array_map a usort.
    • Inšpekcia typov pre chýbajúce typehint anotácie.
    • Zaručená kompatibilita popisov typov s PHPDocs, čo umožňuje používať v PHPDocs typy z chybových hlásení.

    Zdroj: opennet.ru

  • Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster