Vydanie PHPStan 1.0, statického analyzátora kódu PHP

Po šiestich rokoch vývoja sa uskutočnilo prvé stabilné vydanie statického analyzátora PHPStan 1.0, ktorý umožňuje nájsť chyby v kóde PHP bez jeho spúšťania a pomocou unit testov. Kód projektu je napísaný v PHP a distribuovaný pod licenciou MIT.

Analyzátor poskytuje 10 úrovní kontroly, v ktorých každá ďalšia úroveň rozširuje možnosti predchádzajúcej a poskytuje prísnejšie kontroly:

  • Základné kontroly, definovanie neznámych tried, funkcií a metód ($this), nedefinované premenné a odovzdanie nesprávneho počtu argumentov.
  • Identifikácia možno nedefinovaných premenných, neznámych magických metód a vlastností tried pomocou __call a __get.
  • Detekcia neznámych metód vo všetkých výrazoch, neobmedzuje sa len na volania cez $this. Kontrola PHPDocs.
  • Kontrola návratových typov a priradenie typov vlastnostiam.
  • Základná identifikácia „mŕtveho“ (nikdy nevolaného) kódu. Identifikujte inštancie volaní, ktoré vždy vrátia nepravdu, „iné“ bloky, ktoré sa nikdy nespustia, a kódujte po návrate.
  • Kontrola typov argumentov odovzdaných metódam a funkciám.
  • Upozornenie na chýbajúce anotácie s informáciami o type.
  • Upozornenie na nesprávne typy zväzkov, ktoré definujú kolekcie dvoch alebo viacerých typov.
  • Upozornenie na volanie metód a prístup k vlastnostiam s typmi "nullable".
  • Kontrola použitia „zmiešaného“ typu.

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

    • Existencia tried používaných v inštanciách, catch, typehints a iných jazykových konštruktoch.
    • Existencia a dostupnosť volaných metód a funkcií, ako aj počet odovzdaných argumentov.
    • Kontrola, či metóda vracia údaje rovnakého typu, ako je definovaný vo výraze návratu.
    • Existencia a viditeľnosť vlastností, ku ktorým sa pristupuje, a kontrola deklarovaných a skutočných typov údajov použitých vo vlastnostiach.
    • Počet parametrov odovzdaných volaniam sprintf/printf v bloku formátovania reťazca je správny.
    • Existencia premenných zohľadňujúcich bloky tvorené rozvetvenými operátormi a slučkami.
    • Zbytočné pretypovanie (napr. "(reťazec) 'foo'") a prísne testy ("===" a "!==") údajov s rôznymi typmi a operandmi, ktoré vždy vrátia hodnotu false.

    Kľúčové inovácie v PHPStan 1.0:

    • Bola implementovaná kontrolná úroveň „9“, ktorá kontroluje použitie „zmiešaného“ typu, určeného na organizáciu príjmu parametrov rôznych typov funkciou. Úroveň XNUMX identifikuje nebezpečné použitie „zmiešaného“, ako je odovzdávanie hodnôt typu „zmiešané“ inému typu, volanie metód typu „zmiešané“ a prístup k jeho vlastnostiam, pretože nemusia existovať.
    • Pomocou anotácií @phpstan-pure a @phpstan-impure skontrolujte, či sú návratové hodnoty identické pre identické volania funkcií.
    • Typ analýzy v konštrukciách try-catch-finally pomocou @throws anotácií.
    • Identifikácia definovaných, ale nepoužívaných interných (súkromných) vlastností, metód a konštánt.
    • Odovzdávanie nekompatibilných spätných volaní funkciám poľa, ako sú array_map a usort.
    • Typová kontrola na chýbajúce typografické poznámky.
    • Vytvorené typové deklarácie kompatibilné s PHPDocs, čo umožňuje použitie typov z chybových správ v PHPDocs.

    Zdroj: opennet.ru

  • Pridať komentár