PHPStan 1.0, statiskā PHP koda analizatora izlaišana

Pēc sešu gadu izstrādes notika pirmā stabilā statiskā analizatora PHPStan 1.0 izlaide, kas ļauj atrast kļūdas PHP kodā, to neizpildot un neizmantojot vienību testus. Projekta kods ir rakstīts PHP un izplatīts saskaņā ar MIT licenci.

Analizators nodrošina 10 pārbaudes līmeņus, kuros katrs nākamais līmenis paplašina iepriekšējās iespējas un nodrošina stingrākas pārbaudes:

  • Pamatpārbaudes, nezināmu klašu, funkciju un metožu definēšana ($this), nedefinēti mainīgie un nepareiza argumentu skaita nodošana.
  • Iespējami nedefinētu mainīgo, nezināmu maģisko metožu un klašu īpašību identificēšana ar __call un __get.
  • Nezināmu metožu noteikšana visās izteiksmēs, ne tikai izsaukumiem, izmantojot $this. PHPDocs pārbaude.
  • Atgriešanās veidu pārbaude un veidu piešķiršana rekvizītiem.
  • “mirušā” (nekad nesauktā) koda pamata identifikācija. Identificējiet zvanu gadījumus, kas vienmēr atgriež viltus, "citus" blokus, kas nekad neaktivizējas, un kodējiet pēc atgriešanās.
  • Metodēm un funkcijām nodoto argumentu veidu pārbaude.
  • Brīdinājums par trūkstošām veida informācijas anotācijām.
  • Brīdinājums par nepareiziem savienības veidiem, kas definē divu vai vairāku veidu kolekcijas.
  • Brīdinājums par izsaukšanas metodēm un piekļūšanu rekvizītiem ar tipiem "nullable".
  • "Jauktā" veida izmantošanas pārbaude.

    Apzināto pamatproblēmu piemēri:

    • Klašu esamība, kas tiek izmantota instancēs, nozvejā, burtnīcās un citās valodas konstrukcijās.
    • Izsaukto metožu un funkciju esamība un pieejamība, kā arī nodoto argumentu skaits.
    • Pārbaude, vai metode atgriež datus ar tādu pašu veidu, kā noteikts atgriešanas izteiksmē.
    • Piekļūstamo rekvizītu esamība un redzamība, kā arī rekvizītos izmantoto deklarēto un faktisko datu tipu pārbaude.
    • Virknes formatēšanas blokā sprintf/printf izsaukumiem nodoto parametru skaits ir pareizs.
    • Mainīgo esamība, ņemot vērā blokus, ko veido sazarojošie operatori un cilpas.
    • Bezjēdzīgi tipa apraidi (piem., "(string) 'foo") un stingras pārbaudes ("===" un "!==") datiem ar dažādiem veidiem un operandiem, kas vienmēr atgriež false.

    Galvenie PHPStan 1.0 jauninājumi:

    • Ir ieviests “9” pārbaudes līmenis, kas pārbauda “jauktā” tipa izmantošanu, kas paredzēts, lai organizētu funkciju uztveršanu ar dažādiem tipiem parametriem. XNUMX. līmenis identificē nedrošus “jaukta” lietojumus, piemēram, tipa “jaukts” vērtību nodošanu citam tipam, tipa “jaukts” metožu izsaukšanu un piekļuvi tā rekvizītiem, jo ​​tie var neeksistēt.
    • Kontrolējiet, vai atgriešanas vērtības ir identiskas identiskiem funkciju izsaukumiem, izmantojot @phpstan-pure un @phpstan-impure anotācijas.
    • Tipa analīze “try-catch-finally” konstrukcijās, izmantojot @throws anotācijas.
    • Definētu, bet neizmantotu iekšējo (privāto) īpašību, metožu un konstantu identificēšana.
    • Nesaderīgu atzvanīšanu nodošana masīva funkcijām, piemēram, array_map un usort.
    • Tipa pārbaude, lai atrastu trūkstošās rakstības piezīmes.
    • Veidoja tipu deklarācijas, kas ir saderīgas ar PHPDocs, ļaujot PHPDocs izmantot veidus no kļūdu ziņojumiem.

    Avots: opennet.ru

  • Pievieno komentāru