3.6% Python repositories جي آزمائشي ڪاما غلطيون غائب هيون

ڪوڊ ۾ ڪاما جي غلط استعمال سان لاڳاپيل غلطين لاء پائٿون ڪوڊ جي ڪمزوري تي هڪ مطالعي جا نتيجا شايع ڪيا ويا آهن. مسئلا ان حقيقت جي ڪري پيدا ٿيا آهن ته جڏهن ڳڻپ ڪري رهيا آهن، پٿون خودڪار طريقي سان لسٽ ۾ تارن کي ڳنڍيندو آهي جيڪڏهن اهي ڪاما سان الڳ نه ڪيا ويا آهن، ۽ قيمت کي ٽوپل جي حيثيت سان پڻ سمجهي ٿو جيڪڏهن قيمت ڪاما جي پٺيان آهي. Python ڪوڊ سان 666 GitHub repositories جو هڪ خودڪار تجزيو ڪرڻ کان پوءِ، محققن مطالعي ڪيل منصوبن جي 5٪ ۾ ممڪن ڪاما مسئلن جي نشاندهي ڪئي.

وڌيڪ دستي معائنو ڏيکاريو ته حقيقي غلطيون صرف 24 مخزنن ۾ موجود هيون (3.6٪)، ۽ باقي 1.4٪ غلط مثبت هئا (مثال طور، هڪ ڪاما کي عمدي طور تي ختم ڪري سگهجي ٿو لائنن جي وچ ۾ ملٽي لائن فائل رستا، ڊگھو هيش، HTML. بلاڪ يا SQL اظهار). اهو قابل ذڪر آهي ته حقيقي غلطين سان گڏ 24 ذخيرن ۾ اهڙا وڏا پروجيڪٽ هئا جيئن Tensorflow، Google V8، Sentry، Pydata xarray، rapidpro، django-colorfield ۽ django-helpdesk. بهرحال، ڪاما جا مسئلا Python لاءِ مخصوص نه آهن ۽ اڪثر C/C++ پروجيڪٽس ۾ پيدا ٿين ٿا (حالانڪ سڌارن جا مثال LLVM، Mono، Tensorflow) آهن.

غلطين جي مکيه قسمن جو اڀياس ڪيو ويو:

  • لسٽن، ٽوپلز ۽ سيٽن ۾ اتفاقي طور ڪاما غائب ٿي ويو، جنهن ڪري تارن کي الڳ الڳ قدرن جي تشريح ڪرڻ بدران ڳنڍيو وڃي. مثال طور، سينٽري ۾، هڪ ٽيسٽ لسٽ ۾ "ريليز" ۽ "ڊيسڪور" جي تارن جي وچ ۾ ڪاما گم ٿي وئي، جنهن جي نتيجي ۾ "/ رليز" ۽ "چڪ ڪرڻ جي بدران، غير موجود "/ ريليز دريافت" هينڊلر کي چيڪ ڪيو ويو. /Discover" الڳ.
    3.6% Python repositories جي آزمائشي ڪاما غلطيون غائب هيون

    ٻيو مثال اهو آهي ته هڪ غائب ڪاما ريپڊپرو ۾ ٻه مختلف ضابطا ضم ٿيڻ جو سبب بڻيا 572 لائن:

    3.6% Python repositories جي آزمائشي ڪاما غلطيون غائب هيون

  • هڪ غائب ڪاما هڪ واحد-عنصر ٽوپل تعريف جي آخر ۾، جنهن ڪري اسائنمينٽ کي ٽوپل جي بجاءِ هڪ باقاعده قسم تفويض ڪرڻ جو سبب بڻيو. مثال طور، اظهار "values ​​= (1،)" جي نتيجي ۾ ٿيندو تفويض جي نتيجي ۾ ھڪڙي عنصر جي ھڪڙي ٽپل جي ھڪڙي متغير کي، پر "values ​​= (1)" جي نتيجي ۾ ھڪڙي عددي قسم جي تفويض جي نتيجي ۾ ٿيندو. انهن تفويض ۾ قوسون قسم جي تعريف تي اثر انداز نه ڪندا آهن ۽ اختياري هوندا آهن، ۽ ٽوپل جي موجودگي صرف ڪاما جي موجودگي جي بنياد تي پارسر طرفان طئي ڪيو ويندو آهي. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # ٽپل جي بدران هڪ اسٽرنگ مقرر ڪيو ويندو.) }
  • سامهون واري صورتحال تفويض دوران اضافي ڪاما آهي. جيڪڏهن ڪاما حادثاتي طور تي هڪ تفويض جي آخر ۾ ڇڏي ويو آهي، هڪ ٽپل کي مقرر ڪيو ويندو قدر جي بدران عام قسم جي (مثال طور، جيڪڏهن "قدر = 1"، "قدر = 1" جي بدران بيان ڪيو ويو آهي).

جو ذريعو: opennet.ru

تبصرو شامل ڪريو