Izdaja PHPStan 1.0, statičnega analizatorja za kodo PHP

Po šestih letih razvoja je izšla prva stabilna izdaja statičnega analizatorja PHPStan 1.0, ki omogoča iskanje napak v kodi PHP brez izvajanja le-te in z uporabo enotnih testov. Projektna koda je napisana v PHP in se distribuira pod licenco MIT.

Analizator ponuja 10 stopenj preverjanja, pri čemer vsaka naslednja stopnja razširi zmogljivosti prejšnje in zagotavlja strožje preglede:

  • Osnovna preverjanja, definiranje neznanih razredov, funkcij in metod ($this), nedefinirane spremenljivke in posredovanje napačnega števila argumentov.
  • Prepoznavanje morebitnih nedefiniranih spremenljivk, neznanih čarobnih metod in lastnosti razredov z __call in __get.
  • Zaznavanje neznanih metod v vseh izrazih, ne omejeno na klice prek $this. Preverjanje PHPDocs.
  • Preverjanje povratnih tipov in dodeljevanje tipov lastnostim.
  • Osnovna identifikacija "mrtve" (nikoli poklicane) kode. Identificirajte klice instanceof, ki vedno vrnejo false, bloke »else«, ki se nikoli ne sprožijo, in kodirajte po vrnitvi.
  • Preverjanje vrst argumentov, posredovanih metodam in funkcijam.
  • Opozorilo o opombah z manjkajočimi informacijami o vrsti.
  • Opozorilo o nepravilnih tipih združevanja, ki definirajo zbirke dveh ali več tipov.
  • Opozorilo o klicnih metodah in dostopanju do lastnosti s tipi "nullable".
  • Preverjanje uporabe "mešanega" tipa.

    Primeri ugotovljenih osnovnih težav:

    • Obstoj razredov, ki se uporabljajo v instanceof, catch, typehints in drugih jezikovnih konstruktih.
    • Obstoj in razpoložljivost klicanih metod in funkcij ter število posredovanih argumentov.
    • Preverjanje, ali metoda vrne podatke z istim tipom, kot je definiran v povratnem izrazu.
    • Obstoj in vidnost lastnosti, do katerih se dostopa, ter preverjanje deklariranih in dejanskih tipov podatkov, uporabljenih v lastnostih.
    • Število parametrov, posredovanih klicem sprintf/printf v bloku za oblikovanje niza, je pravilno.
    • Obstoj spremenljivk ob upoštevanju blokov, ki jih tvorijo operaterji razvejanja in zanke.
    • Neuporabne pretvorbe vrst (npr. "(string) 'foo'") in strogi testi ("===" in "!==") podatkov z različnimi vrstami in operandi, ki vedno vrnejo false.

    Ključne novosti v PHPStan 1.0:

    • Izvedena je bila raven preverjanja "9", ki preverja uporabo "mešanega" tipa, namenjenega organizaciji sprejemanja parametrov v funkciji z različnimi vrstami. Raven XNUMX identificira nevarne uporabe "mixed", kot je posredovanje vrednosti tipa "mixed" drugemu tipu, klicanje metod tipa "mixed" in dostop do njegovih lastnosti, ker morda ne obstajajo.
    • Nadzirajte, ali so povratne vrednosti enake za enake klice funkcij z uporabo opomb @phpstan-pure in @phpstan-impure.
    • Analiza tipov v konstruktih try-catch-finally z uporabo opomb @throws.
    • Identifikacija definiranih, vendar neuporabljenih notranjih (zasebnih) lastnosti, metod in konstant.
    • Posredovanje nezdružljivih povratnih klicev matričnim funkcijam, kot sta array_map in usort.
    • Pregled tipov za manjkajoče pripombe tipskega namiga.
    • Narediti deklaracije tipov, združljive s PHPDocs, kar omogoča uporabo tipov iz sporočil o napakah v PHPDocs.

    Vir: opennet.ru

  • Dodaj komentar