Lëshimi i PHPStan 1.0, një analizues statik për kodin PHP

Pas gjashtë vitesh zhvillimi, u bë lëshimi i parë i qëndrueshëm i analizuesit statik PHPStan 1.0, i cili ju lejon të gjeni gabime në kodin PHP pa e ekzekutuar atë dhe duke përdorur testet e njësisë. Kodi i projektit është shkruar në PHP dhe shpërndahet nën licencën MIT.

Analizuesi siguron 10 nivele kontrolli, në të cilat secili nivel pasues zgjeron aftësitë e atij të mëparshmi dhe siguron kontrolle më të rrepta:

  • Kontrollet bazë, përcaktimi i klasave, funksioneve dhe metodave të panjohura ($this), variabla të papërcaktuara dhe kalimi i numrit të gabuar të argumenteve.
  • Identifikimi i variablave ndoshta të papërcaktuar, metodave të panjohura magjike dhe vetive të klasave me __call dhe __get.
  • Zbulimi i metodave të panjohura në të gjitha shprehjet, pa u kufizuar në thirrjet nëpërmjet $this. Kontrollimi i PHPDocs.
  • Kontrollimi i llojeve të kthimit dhe caktimi i llojeve për pronat.
  • Identifikimi bazë i kodit "të vdekur" (të pa thirrur kurrë). Identifikoni shembullin e thirrjeve që kthehen gjithmonë false, blloqet "tjetër" që nuk aktivizohen kurrë dhe kodoni pas kthimit.
  • Kontrollimi i llojeve të argumenteve që u kalohen metodave dhe funksioneve.
  • Paralajmërim rreth mungesës së shënimeve të informacionit të tipit.
  • Paralajmërim për llojet e pasakta të bashkimeve që përcaktojnë koleksionet e dy ose më shumë llojeve.
  • Paralajmërim për metodat e thirrjes dhe aksesin në pronat me tipe "të pavlefshme".
  • Kontrollimi i përdorimit të tipit "të përzier".

    Shembuj të problemeve themelore të identifikuara:

    • Ekzistenca e klasave të përdorura në instanceof, catch, typehints dhe konstruksione të tjera gjuhësore.
    • Ekzistenca dhe disponueshmëria e metodave dhe funksioneve të thirrura, si dhe numri i argumenteve të kaluar.
    • Kontrollimi që metoda kthen të dhëna me të njëjtin lloj siç përcaktohet në shprehjen e kthimit.
    • Ekzistenca dhe dukshmëria e pronave që aksesohen, dhe kontrollimi i llojeve të të dhënave të deklaruara dhe aktuale të përdorura në pronat.
    • Numri i parametrave të kaluar në thirrjet sprintf/printf në bllokun e formatimit të vargut është i saktë.
    • Ekzistenca e variablave duke marrë parasysh blloqet e formuara nga operatorët e degëzimit dhe sythe.
    • Llojet e padobishme (p.sh. "(string) 'foo') dhe teste strikte ("===" dhe "!==") mbi të dhënat me lloje dhe operandë të ndryshëm që kthehen gjithmonë false.

    Risitë kryesore në PHPStan 1.0:

    • Është zbatuar niveli i kontrollit "9", i cili kontrollon përdorimin e tipit "të përzier", i destinuar për organizimin e marrjes së funksionit të parametrave me lloje të ndryshme. Niveli XNUMX identifikon përdorime të pasigurta të "të përziera", të tilla si kalimi i vlerave të tipit "të përzier" në një lloj tjetër, thirrja e metodave të tipit "të përziera" dhe aksesi në pronat e tij sepse ato mund të mos ekzistojnë.
    • Kontrolloni nëse vlerat e kthimit janë identike për thirrjet identike të funksioneve duke përdorur shënimet @phpstan-pure dhe @phpstan-impure.
    • Lloji analizë në konstruktet provo-catch-finally duke përdorur shënimet @throws.
    • Identifikimi i vetive, metodave dhe konstantave të përcaktuara por të papërdorura të brendshme (private).
    • Kalimi i kthimeve të thirrjeve të papajtueshme te funksionet e grupit si array_map dhe usort.
    • Inspektimi i tipit për shënimet e tekstit që mungojnë.
    • Deklarimet e bëra të tipit të pajtueshme me PHPDocs, duke lejuar që llojet nga mesazhet e gabimit të përdoren në PHPDocs.

    Burimi: opennet.ru

  • Shto një koment