පරීක්‍ෂා කරන ලද පයිතන් ගබඩාවලින් 3.6%ක කොමා දෝෂ මඟ හැරී ඇත

Python කේතයේ ඇති අනාරක්ෂිත බව පිළිබඳ අධ්‍යයනයක ප්‍රතිඵල ප්‍රකාශයට පත් කර ඇත. ගණන් කිරීමේදී, Python විසින් ලැයිස්තුවේ ඇති නූල් කොමාවකින් වෙන් කර නොමැති නම්, ඒවා ස්වයංක්‍රීයව සංකලනය වන අතර, එම අගයට පසුව කොමාවක් යෙදුවහොත් එම අගය tuple එකක් ලෙස සලකන නිසා ගැටළු ඇති වේ. Python කේතය සමඟ GitHub ගබඩා 666 ක ස්වයංක්‍රීය විශ්ලේෂණයක් සිදු කිරීමෙන් පසු, පර්යේෂකයන් විසින් අධ්‍යයනය කරන ලද ව්‍යාපෘතිවලින් 5% ක කොමා ගැටළු හඳුනාගෙන ඇත.

වැඩිදුර අත්පොත පරීක්‍ෂාවෙන් පෙන්නුම් කළේ නිධි 24ක (3.6%) සැබෑ දෝෂ ඇති බවත්, ඉතිරි 1.4% ව්‍යාජ ධනාත්මක බවත්ය (උදාහරණයක් ලෙස, බහු-රේඛා ගොනු මාර්ග, දිගු හෑෂ්, HTML සම්බන්ධ කිරීම සඳහා පේළි අතර කොමාවක් හිතාමතාම මඟ හැරිය හැක. බ්ලොක් හෝ SQL ප්‍රකාශන). සැබෑ දෝෂ සහිත ගබඩා 24 අතර Tensorflow, Google V8, Sentry, Pydata xarray,rappipro, django-colorfield සහ django-helpdesk වැනි විශාල ව්‍යාපෘති වූ බව සැලකිය යුතු කරුණකි. කෙසේ වෙතත්, කොමාව සමඟ ඇති ගැටළු Python සඳහා විශේෂිත නොවන අතර බොහෝ විට C/C++ ව්‍යාපෘතිවල වර්ධනය වේ (මෑත නිවැරදි කිරීම් සඳහා උදාහරණ වන්නේ LLVM, Mono, Tensorflow).

අධ්යයනය කරන ලද ප්රධාන දෝෂ වර්ග:

  • ලැයිස්තු, ටියුපල් සහ කට්ටලවල අහම්බෙන් කොමාවක් මග හැරීම, වෙනම අගයන් ලෙස අර්ථ දැක්වීම වෙනුවට තන්තු ඒකාබද්ධ කිරීමට හේතු වේ. උදාහරණයක් ලෙස, Sentry හි, එක් පරීක්ෂණයකට ලැයිස්තුවේ "නිදහස්" සහ "ඩිස්කවර්" යන තන්තු අතර කොමාවක් මග හැරී ඇති අතර, එහි ප්‍රතිඵලය වූයේ "/නිදහස්" සහ "පරීක්ෂා කිරීම වෙනුවට නොපවතින "/releasesdiscover" හසුරුවන්නක් පරීක්ෂා කිරීමයි. /සොයාගන්න" වෙන වෙනම.
    පරීක්‍ෂා කරන ලද පයිතන් ගබඩාවලින් 3.6%ක කොමා දෝෂ මඟ හැරී ඇත

    තවත් උදාහරණයක් නම්,rappro හි නැතිවූ කොමාවක් 572 පේළියේ විවිධ නීති දෙකක් ඒකාබද්ධ කිරීමට හේතු විය.

    පරීක්‍ෂා කරන ලද පයිතන් ගබඩාවලින් 3.6%ක කොමා දෝෂ මඟ හැරී ඇත

  • තනි-මූලද්‍රව්‍ය ටියුපල් නිර්වචනය අවසානයේ නැතිවූ කොමාවක්, පැවරුමට ටියුපල්ට වඩා සාමාන්‍ය වර්ගයක් පැවරීමට හේතු වේ. උදාහරණයක් ලෙස, "අගය = (1,)" යන ප්‍රකාශය එක් මූලද්‍රව්‍යයක ටියුපල් එකක විචල්‍යයකට පැවරීමක් ඇති කරයි, නමුත් "අගය = (1)" නිඛිල වර්ගයක පැවරුමක් ඇති කරයි. ඉහත පැවරුම්වල වරහන් වර්ග නිර්වචනයට බලපාන්නේ නැති අතර ඒවා විකල්ප වේ, සහ tuple එකක් තිබීම විග්‍රහ කරන්නා විසින් තීරණය කරනු ලබන්නේ කොමාව තිබීම මත පමණි. REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated' # ට ටපල් එකක් වෙනුවට තන්තුවක් පවරනු ලැබේ. ) }
  • ප්‍රතිවිරුද්ධ තත්වය පැවරීමේදී අමතර කොමා වේ. පැවරුමක් අවසානයේ කොමාවක් අහම්බෙන් ඉතිරි වුවහොත්, සාමාන්‍ය වර්ගය වෙනුවට ටියුපල් අගයක් පවරනු ලැබේ (උදාහරණයක් ලෙස, “අගය = 1” වෙනුවට “අගය = 1” සඳහන් කරන්නේ නම්).

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න