Lëshimi i PHPStan 1.0, analizuesi statik për kodin në gjuhën PHP

Pas pas gjashtë vjet zhvillimi, doli versioni i parë stabil i analizatorit statik PHPStan 1.0, që lejon identifikimin e gabimeve në kodin PHP pa ekzekutimin e tij dhe pa përdorimin e testeve unit. Kodi i projektit është shkruar në PHP dhe shpërndahet nën licencën MIT.

Analizatori ofron 10 nivele kontrolli, ku çdo nivel i mëpasshëm zgjeron kapacitetet e nivelit të mëparshëm dhe ofron kontroll më të rreptë:

  • Kontrolli bazĂ«, pĂ«rcaktimi i klasave, funksioneve dhe metodave tĂ« panjohura ($this), variablave tĂ« pavendosur, si dhe kalimi i numrit tĂ« gabuar tĂ« argumenteve.
  • Identifikimi i variablave tĂ« mundshĂ«m tĂ« pavendosur, metodave dhe pronave tĂ« panjohura tĂ« magjisĂ« me __call dhe __get.
  • Identifikimi i metodave tĂ« panjohura nĂ« tĂ« gjitha shprehjet, pa u kufizuar nĂ« thirrjen pĂ«rmes $this. Verifikimi i PHPDocs.
  • Verifikimi i tipave tĂ« kthimit dhe caktimi i tipave pĂ«r pronat.
  • Zbulimi bazor i kodit "tĂ« vdekur" (nuk Ă«shtĂ« thirrur kurrĂ«). Zbulimi i thirrjeve instanceof qĂ« gjithmonĂ« kthejnĂ« vlerĂ«n false, blloqeve "else" qĂ« nuk aktivizohen kurrĂ« dhe kodit qĂ« ndodhet pas return.
  • Verifikimi i tipave tĂ« argumenteve qĂ« kalohen nĂ« metoda dhe funksione.
  • ShpĂ«rthimi pĂ«r mungesĂ«n e annotimeve me informacione mbi tipat.
  • ShpĂ«rthimi pĂ«r tipat union tĂ« pasakta, qĂ« pĂ«rcaktojnĂ« koleksione nga dy ose mĂ« shumĂ« tipe.
  • Kujdes pĂ«r thirrjet e metodave dhe qasjen nĂ« pronat me tipe "nullable".
  • Kontrolli i pĂ«rdorimit tĂ« tipit "mixed".

    Shembuj të problemeve bazë të identifikuara:

    • Ekzistenca e klasave tĂ« pĂ«rdorura nĂ« instanceof, catch, typehints dhe struktura tĂ« tjera tĂ« gjuhĂ«s.
    • Ekzistenca dhe disponueshmĂ«ria e metodave dhe funksioneve qĂ« thirren, si dhe numri i argumenteve tĂ« kaluara.
    • Kontrolli i kthimit tĂ« tĂ« dhĂ«nave nga metoda me tĂ« njĂ«jtin tip, siç pĂ«rcaktohet nĂ« shprehjen return.
    • Ekzistenca dhe dukshmĂ«ria e pronave, tĂ« cilat qasen, si dhe verifikimi i typeve tĂ« shpallura dhe ato aktuale tĂ« tĂ« dhĂ«nave qĂ« pĂ«rdoren nĂ« prona.
    • SaktĂ«sia e numrit tĂ« parametrave tĂ« kaluara nĂ« thirrjet sprintf/printf nĂ« bllokun e formatimit tĂ« vargjeve.
    • Ekzistenca e variablave duke marrĂ« parasysh blloqet, qĂ« formohen nga operatorĂ«t e ndarjes dhe ciklet.
    • PĂ«rtuarjet e kota tĂ« tipeve (p.sh., "(string) 'foo'") dhe kontrolli strikt ("===" dhe "!==") tĂ« tĂ« dhĂ«nave me tipe dhe operanda tĂ« ndryshme, qĂ« gjithmonĂ« kthejnĂ« vlerĂ«n false.

    Novitetet kryesore të PHPStan 1.0:

    • Niveli i kontrollit "9" Ă«shtĂ« implementuar, duke realizuar kontrolle tĂ« pĂ«rdorimit tĂ« tipit "mixed", i destinuar pĂ«r tĂ« organizuar pranimin e parametrave me tipe tĂ« ndryshme nga funksioni. Niveli i nĂ«ntĂ« zbarton praktikata tĂ« pasigurta nĂ« pĂ«rdorimin e "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 kontrollit tĂ« identitetit tĂ« vlerave tĂ« kthyer pĂ«r thirrje tĂ« ngjashme tĂ« funksioneve duke pĂ«rdorur annotimet @phpstan-pure dhe @phpstan-impure.
    • Analiza e tipeve nĂ« strukturat try-catch-finally duke pĂ«rdorur annotimet @throws.
    • Identifikimi i pronave, metodave dhe konstantave tĂ« brendshme (private) tĂ« caktuara, por tĂ« papĂ«rdorura.
    • Kalimi i thirrjeve tĂ« callback tĂ« paqĂ«ndrueshme nĂ« funksionet e manipulimit tĂ« vargjeve, siç janĂ« array_map dhe usort.
    • Inspektimi i tipeve pĂ«r annotimet e mungueshme tĂ« typehint.
    • ËshtĂ« siguruar kompatibiliteti i pĂ«rshkrimeve tĂ« tipeve me PHPDocs, qĂ« lejon pĂ«rdorimin e tipave nga mesazhet e gabimeve nĂ« PHPDocs.

    Burimi: opennet.ru

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