PHPStan 1.0 väljalase, staatiline analüsaator PHP koodi jaoks.

Pärast kuueaastast arendustööd on välja antud PHPStan 1.0, staatilise analüsaatori esimene stabiilne versioon, mis võimaldab leida PHP koodis vigu ilma selle käitamiseta ja unit-testide kasutamiseta. Projekti kood on kirjutatud PHP keeles ja levitatakse MIT litsentsi alusel.

Analüsaator pakub 10 kontrollitaset, kus iga järgmine tase laiendab eelneva võimalusi ja pakub rangemaid kontrolle:

  • Põhikontrollid, teadmata klasside, funktsioonide ja meetodite ($this) määramine, määramata muutujad ja vale arvu argumentide edastamine.
  • Tõenäoliselt määramata muutujate, teadmata magic-meetodite ja klasside omaduste, nagu __call ja __get, tuvastamine.
  • Teadmata meetodite tuvastamine kõigis väljendites, mitte ainult $this kaudu kutsumisest. PHPDocide kontroll.
  • Tagastus- ja omaduste tüüpide määramine.
  • Põhiline „surma” (kunagi mitte kutsutud) koodi tuvastamine. Tuvastamine instanceof kutsumistest, mis alati tagastavad vale, kunagi mitte käivituvate 'else' plokkide ja kodu, mis asub pärast return.
  • Argumentide tüüpide kontroll, mis edastatakse meetoditele ja funktsioonidele.
  • Hoiatus tüüpide teabeannotatsioonide puudumise kohta.
  • Hoiatus vale union-tüüpide kohta, mis määratlevad kahest või enamast tüübist koosnevaid kollektsioone.
  • Hoiatus meetodite kutsumise ja omadustele pääsemise kohta 'nullable' tüüpidega.
  • Kasutamise muda tüüpide kontroll.

    Näited tuvastatud põhiprobleemidest:

    • Klasside olemasolu, mida kasutatakse instanceof, catch, typehints ja muudes keelkonstruktsioonides.
    • Kutsutavate meetodite ja funktsioonide olemasolu ja kättesaadavus ning edastatavate argumentide arv.
    • Kontroll, et meetod tagastab andmed sama tüübiga, mis on määratud return väljendis.
    • Omandite olemasolu ja nähtavus, millesse päästetakse, samuti kontrollitud ja tegelike andmetüüpide kontroll, mida kasutatakse omadustes.
    • Parameetrite arvu täpsus, mis edastatakse sprintf/printf kutsumistes stringide vormindamise plokkides.
    • Muutujate olemasolu, arvestades plokke, mis on loodud haru ja tsükli operaatoritega.
    • Kasutu tüüpide konverteerimine (näiteks '(string) 'foo'') ja ranged kontrollid ('===' ja '!==') andmete puhul, millel on erinevad tüübid ja operaatorid, mis alati tagastavad vale.

    PHPStan 1.0 peamised uuendused:

    • Teostatud on kontrollitase „9“, mis teostab „mixed“ tüüpi kasutamise kontrolli, et võimaldada erinevate tüüpidega parameetrite vastuvõtmist funktsioonis. Üheksas tase tuvastab ebaselged „mixed“ kasutamisviisid, näiteks väärtuste edastamine „mixed“ tüübist teisele tüübile, „mixed“ tüübiga meetodite kutsumine ja selle omaduste kasutamine, kuna need võivad puududa.
    • Tagastatud väärtuste identiteedi kontrollimiseks ja sama funktsioonikutsumise haldamiseks kasutatakse annotatsioone @phpstan-pure ja @phpstan-impure.
    • Tüüpide analüüs try-catch-finally konstruktsioonides annotatsioonide @throws abil.
    • Teatud, kuid mitte kasutatavate sisemiste (private) omaduste, meetodite ja konstantide tuvastamine.
    • Ühilduvate callback-kutsungite edastamine massiivide töötlemise funktsioonidesse, nagu array_map ja usort.
    • Tüüpide kontrollimine puuduvate typehint-annotatsioonide jaoks.
    • Tagatud on tüübikirjelduste ühilduvus PHPDocs-iga, mis võimaldab PHPDocs-is kasutada vigade teadetes esitatud tüüpe.

    Allikas: opennet.ru

  • Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster