Në 3.6% të depozitave Python të testuara janë identifikuar gabime të lidhura me mungesat e presjeve.

Rezultatet e kërkimit për ndjeshmërinë e kodit në gjuhën Python ndaj gabimeve të lidhura me përdorimin e gabuar të virgullave në kod janë publikuar. Problemet shkaktohen nga fakti se gjatë listave Python automatikisht bashkon vargjet në listë, nëse ato nuk ndahen me një virgull, si dhe e trajton vlerën si një tuple nëse pas vlerës ndodhet një virgull. Duke realizuar një analizë automatizuar të 666 repositorive në GitHub me kod në gjuhën Python, studiuesit zbuluan probleme të mundshme me virgullat në 5% të projekteve të studiuara.

Kontrolli i mĂ«tejshĂ«m manual tregoi se gabimet reale ndodhen vetĂ«m nĂ« 24 repositorĂ« (3.6%), ndĂ«rsa 1.4% e tjera janĂ« false pozitive (p.sh. mund tĂ« jetĂ« qĂ« njĂ« virgull Ă«shtĂ« qĂ«llimisht e lĂ«nĂ« jashtĂ« midis vargjeve pĂ«r tĂ« bashkuar rrugĂ«t e ndara tĂ« skedarĂ«ve, hash-eve tĂ« gjata, blloqeve HTML ose shprehjeve SQL). ËshtĂ« interesante se nĂ« mesin e 24 repositorĂ«ve me gabime reale janĂ« pĂ«rfshirĂ« projekte tĂ« mĂ«dha si Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield dhe django-helpdesk. NdĂ«rkohĂ«, problemet me virgullat nuk janĂ« specifike pĂ«r Python dhe shpesh shfaqen nĂ« projekte nĂ« C/C++ (shembuj tĂ« fundit tĂ« rregullimeve — LLVM, Mono, Tensorflow).

Llojet kryesore të gabimeve të studiuara:

  • Virgulla e humbur aksidentalisht nĂ« lista, tuple dhe shumĂ«si, qĂ« çon nĂ« bashkimin e vargjeve nĂ« vend tĂ« interpretimit tĂ« tyre si vlera tĂ« ndara. PĂ«r shembull, nĂ« Sentry nĂ« njĂ« nga testet u la jashtĂ« njĂ« virgull midis vargjeve "releases" dhe "discover" nĂ« listĂ«, qĂ« çoi nĂ« kontrollin e njĂ« trajtuesi qĂ« nuk ekziston "\/releasesdiscover", nĂ« vend tĂ« kontrollit tĂ« ndarĂ« "\/releases" dhe "\/discover".
    Në 3.6% të depozitave Python të testuara janë identifikuar gabime të lidhura me mungesat e presjeve.

    Një shembull tjetër është një virgull e humbur në rapidpro që çoi në bashkimin e dy rregullave të ndryshme në vargun 572:

    Në 3.6% të depozitave Python të testuara janë identifikuar gabime të lidhura me mungesat e presjeve.
  • Virgulla e humbur nĂ« fund tĂ« pĂ«rcaktimit tĂ« njĂ« tuple prej njĂ« elementi, qĂ« çon nĂ« faktin se gjatĂ« caktimit do tĂ« caktohet njĂ« tip normal nĂ« vend tĂ« njĂ« tuple. PĂ«r shembull, shprehja "values = (1,)" do tĂ« çojĂ« nĂ« caktimin e njĂ« variabli si njĂ« tuple prej njĂ« elementi, ndĂ«rsa "values = (1)" do tĂ« çojĂ« nĂ« caktimin e tipit tĂ« plotĂ«. ËshtĂ« e rĂ«ndĂ«sishme tĂ« theksohet se kornizat nĂ« caktimet e pĂ«rmendura s’kanĂ« ndikim nĂ« pĂ«rcaktimin e tipit dhe janĂ« opsionale, ndĂ«rsa ekzistenca e njĂ« tuple pĂ«rcaktohet nga parseri vetĂ«m nĂ« bazĂ« tĂ« pranisĂ« sĂ« virgullave. REST_FRAMEWORK = { ‘DEFAULT_PERMISSION_CLASSES’: ( ‘rest_framework.permissions.IsAuthenticated’ # nĂ« vend tĂ« njĂ« tuple, do tĂ« caktohet njĂ« varg. ) }
  • Situata e kundĂ«rt — pika tĂ« tepĂ«rta gjatĂ« caktimit. NĂ«se nĂ« fund tĂ« caktimit Ă«shtĂ« lĂ«nĂ« rastĂ«sisht njĂ« pikĂ«, atĂ«herĂ« si vlerĂ« do tĂ« caktohet njĂ« tuple (pĂ«r shembull, nĂ«se nĂ« vend tĂ« «value = 1» Ă«shtĂ« shkruar «value = 1,»).

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