PHPStan 1.0, staatiline analüsaator PHP koodile, on välja antud

Pärast kuueaastast arendustööd ilmus PHPStan 1.0, esimene stabiilne versioon staatilisest analüüsijast, mis võimaldab leida PHP-koodis vigu ilma selle käivitamiseta ja üksuste teste kasutamata. Projekti kood on kirjutatud PHP keeles ja jagatakse MIT litsentsi alusel.

Analüsaator pakub 10 kontrollitaset, kus igas järgmises tasemes laiendatakse eelmise võimalusi ja pakutakse rangemaid kontrolle:

  • Põhikontrollid, tundmatute klasside, funktsioonide ja meetodite ($this) määramine, määramata muutujate ning vale argumendi arvu edastamine.
  • Tõenäoliselt määramata muutujate, tundmatute magic-meetodite ja klasside omaduste, kus on __call ja __get, tuvastamine.
  • Tundmatute meetodite leidmine kõikides väljendites, piiranguteta $this kaudu kutsumisele. PHPDocide kontroll.
  • Tagastatavate tüüpide ja omaduste tüüpide määramise kontroll.
  • Põhiline „surma” (kunagi mitte kutsutud) koodi tuvastamine. instance of ehk millegi, mis alati tagastab false, ja kunagi mitteaktiveeruvate else-blokkide ning koodi, mis asub return'i järel, tuvastamine.
  • Argumentide tüüpide kontroll, mis edastatakse meetoditele ja funktsioonidele.
  • Tüüpinfo annotatsioonide puudumise hoiatus.
  • Hoiatus mittetäpsete union-tüüpide kohta, mis määratlevad kollektsioone kahest või enamat tüüpi.
  • Teade meetodite ja omaduste kutsumisest ning ligipääsust «nullable» tüüpidega.
  • Kontroll «mixed» tüübi kasutamise üle.

    Tuvastatud põhiprobleemide näited:

    • Klasside olemasolu, mida kasutatakse instanceof, catch, typehints ja teiste keelekonstruktsioonide puhul.
    • Kutsutavate meetodite ja funktsioonide olemasolu ja kättesaadavus, samuti edastatavate argumendi arv.
    • Kontrollige, kas meetod tagastab andmeid, mille tüüp on sama, mis return'i lauses määratletud.
    • Atribuutide olemasolu ja nähtavus, millele pöördutakse, samuti kuulutatud ja tegelike andmetüüpide kontroll, mida atribuutides kasutatakse.
    • Argumentide arvu korrektne kontroll sprintf/printf kutsumisel stringi vormindamise plokis.
    • Muuttute olemasolu, arvestades plokke, mis moodustuvad haru- ja tsükliliste käskude kaudu.
    • Kasutu tüüpide muutmine (näiteks «(string) ‘foo’») ja ranged kontrolld skaaladega (nt «===» ja «!==») andmete kohta, mis on alati false.

    PHPStan 1.0 peamised uuendused:

    • Tasetud on tase "9", mis kontrollib "mixed" tüübi kasutamise regulaarsust, et võimaldada funktsiooniparametrite vastuvõtmist erinevatest tüüpidest. Üheksas tase tuvastab "mixed" tüübi kasutamisel riskantsed praktikad, nagu näiteks "mixed" tüüpi väärtuste edastamine teise tüübiga, meetodite kutsumine "mixed" tüübiga ja selle omadustele pääsemine, kuna need võivad puududa.
    • Tagastatud väärtuste identiteedi kontroll, kui kutsutakse funktsioone, kasutades annotatsioone @phpstan-pure ja @phpstan-impure.
    • Tüüpide analüüs try-catch-finally konstruktsioonides annotatsioonide @throws kasutamisega.
    • Teatud, kuid kasutamata privaatsete (private) omaduste, meetodite ja konstantide tuvastamine.
    • Ühildumatute callback-kutsungite edastamine massiivide töötlemise funktsioonidesse, nagu array_map ja usort.
    • Tüüpide kontrollimine puuduvate typehint-annotatsioonide jaoks.
    • Tüüpide kirjelduste ühilduvus PHPDocsiga on tagatud, võimaldades PHPDocsis kasutada vigu käsitlevaid tüüpe.

    Allikas: opennet.ru

  • Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster