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

Pas pas gjashtë vitesh zhvillimi doli versioni i parë stabil i analizatorit statik PHPStan 1.0, i cili lejon gjetjen e gabimeve në kodin PHP pa e ekzekutuar atë dhe pa përdorur teste unitare. Kodi i projektit është shkruar në PHP dhe shpërndahet nën licencën MIT.

Analizatori ofron 10 nivele kontrolli, në të cilat çdo nivel i mëpasshëm zgjeron mundësitë e nivelit paraardhës dhe ofron verifikime më të rrepta:

  • Kontrolli bazik, pĂ«rcaktimi i klasave, funksioneve dhe metodave tĂ« panjohura ($this), variableve tĂ« pavĂ«rtetuara dhe kalimit tĂ« numrit tĂ« gabuar tĂ« argumenteve.
  • Identifikimi i variableve tĂ« mundshme tĂ« papĂ«rcaktuara, metodave magjike tĂ« panjohura dhe pronave tĂ« klasĂ«s me __call dhe __get.
  • Identifikimi i metodave tĂ« panjohura nĂ« tĂ« gjitha shprehjet, duke mos u kufizuar nĂ« thirrjen pĂ«rmes $this. Kontrolli i PHPDocs.
  • Kontrolli i tipeve tĂ« kthimit dhe caktimi i tipeve pĂ«r pronat.
  • Identifikimi bazik i kodit 'tĂ« vdekur' (nuk Ă«shtĂ« thirrur kurrĂ«). Identifikimi i thirrjeve instanceof qĂ« gjithmonĂ« kthejnĂ« vlerĂ«n false, blloqeve 'else' qĂ« kurrĂ« nuk aktivizohen dhe kodit qĂ« ndodhet pas return.
  • Kontrolli i tipeve tĂ« argumenteve tĂ« kaluara nĂ« metoda dhe funksione.
  • Kujtesa pĂ«r mungesĂ«n e anotacioneve me informacione pĂ«r tipet.
  • Kujtesa pĂ«r tipe union tĂ« papĂ«rshtatshme, tĂ« cilat definitojnĂ« koleksione nga dy ose mĂ« shumĂ« tipe.
  • Kujtesa pĂ«r thirrjen e metodave dhe aksesin nĂ« prona me tipe 'nullable'.
  • Kontrolli i pĂ«rdorimit tĂ« tipit 'mixed'.

    Shembuj të problemeve bazike të identifikuara:

    • Prania e klasave tĂ« pĂ«rdorura nĂ« instanceof, catch, typehints dhe konstrukte tĂ« tjera tĂ« gjuhĂ«s.
    • Prania dhe disponueshmĂ«ria e metodave dhe funksioneve tĂ« thirrur, si dhe numri i argumenteve tĂ« kaluara.
    • Kontrolli i kthimit nga metoda tĂ« dhĂ«nave me tĂ« njĂ«jtin tip siç Ă«shtĂ« pĂ«rcaktuar nĂ« shprehjen return.
    • Prania dhe dukshmĂ«ria e pronave, tĂ« cilat aksesohen, si dhe kontrolli i tipeve tĂ« shpallura dhe atyre faktike tĂ« dhĂ«nave tĂ« pĂ«rdorura nĂ« prona.
    • SaktĂ«sia e numrit tĂ« parametrave tĂ« kaluara nĂ« thirrjet sprintf/printf nĂ« bllokun e formatimit tĂ« vargjeve.
    • Prania e variableve duke marrĂ« parasysh blloqet qĂ« krijohen nga operatorĂ«t e ndarjes dhe cikleve.
    • ShndĂ«rrime tĂ« panevojshme tĂ« tipeve (p.sh., '(string) 'foo'') dhe kontrollit tĂ« fortĂ« ('===' dhe '!==') tĂ« tĂ« dhĂ«nave me tipe dhe operanda tĂ« ndryshme, qĂ« gjithmonĂ« kthejnĂ« vlerĂ«n false.

    Novitetet kryesore të PHPStan 1.0:

    • PĂ«rgjegjĂ«sia e kontrollit "9" Ă«shtĂ« implementuar, e cila kryen verifikime tĂ« pĂ«rdorimit tĂ« tipit "mixed", e destinuar pĂ«r organizimin e pranimit tĂ« funksionit tĂ« parametrave me tipo tĂ« ndryshme. Niveli i nĂ«ntĂ« identifikon praktikat e pasigurta tĂ« pĂ«rdorimit tĂ« "mixed", siç Ă«shtĂ« kalimi i vlerave me tipin "mixed" nĂ« njĂ« tip tjetĂ«r, thirrja e metodave me tipin "mixed" dhe qasja nĂ« pronat e tij, pasi ato mund tĂ« mos ekzistojnĂ«.
    • Menaxhimi i verifikimit tĂ« identitetit tĂ« vlerave tĂ« rikthyera pĂ«r thirrje tĂ« njĂ«jta funksionesh duke pĂ«rdorur annotimet @phpstan-pure dhe @phpstan-impure.
    • Analiza e tipeve nĂ« konstrukcione try-catch-finally duke pĂ«rdorur annotimet @throws.
    • Identifikimi i disa por jo tĂ« pĂ«rdorur pronave, metodave dhe konstantave tĂ« brendshme (private).
    • Kalimi i thirrjeve tĂ« callback-ve tĂ« paqartĂ« nĂ« funksionet e punĂ«s me arrays, si array_map dhe usort.
    • Inspektimi i tipeve pĂ«r annotimet e mungesĂ«s typehint.
    • Ă«shtĂ« siguruar kompatibiliteti i pĂ«rshkrimeve tĂ« tipeve me PHPDocs, duke lejuar pĂ«rdorimin e tipeve nga mesazhet e gabimeve nĂ« PHPDocs.

    Burimi: opennet.ru

  • Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster