3.6% ازگر کے ذخیروں کا تجربہ کیا گیا جس میں کوما کی غلطیاں غائب تھیں۔

کوڈ میں کوما کے غلط استعمال سے متعلق غلطیوں کے لیے Python کوڈ کی کمزوری پر ایک مطالعہ کے نتائج شائع کیے گئے ہیں۔ مسائل اس حقیقت کی وجہ سے پیدا ہوتے ہیں کہ گنتی کرتے وقت، Python فہرست میں موجود تاروں کو خود بخود جوڑ دیتا ہے اگر وہ کوما سے الگ نہیں ہوتے ہیں، اور اگر قدر کو کوما سے الگ کیا جاتا ہے تو اسے ٹیپل کے طور پر بھی سمجھتا ہے۔ Python کوڈ کے ساتھ 666 GitHub ذخیروں کا خودکار تجزیہ کرنے کے بعد، محققین نے مطالعہ کیے گئے منصوبوں میں سے 5% میں کوما کے ممکنہ مسائل کی نشاندہی کی۔

مزید دستی معائنہ سے معلوم ہوا کہ حقیقی غلطیاں صرف 24 ریپوزٹریز (3.6%) میں موجود تھیں، اور باقی 1.4% غلط مثبت تھیں (مثال کے طور پر، ملٹی لائن فائل پاتھ، لمبی ہیشز، ایچ ٹی ایم ایل کو جوڑنے کے لیے لائنوں کے درمیان کوما کو جان بوجھ کر چھوڑا جا سکتا ہے۔ بلاکس یا ایس کیو ایل اظہار)۔ یہ قابل ذکر ہے کہ حقیقی خامیوں کے ساتھ 24 ذخیروں میں Tensorflow، Google V8، Sentry، Pydata xarray، rapidpro، django-colorfield اور django-helpdesk جیسے بڑے پروجیکٹس تھے۔ تاہم، کوما کے مسائل Python کے لیے مخصوص نہیں ہیں اور اکثر C/C++ پروجیکٹس میں سامنے آتے ہیں (حالیہ اصلاحات کی مثالیں LLVM، Mono، Tensorflow ہیں)۔

غلطیوں کی اہم اقسام کا مطالعہ کیا گیا:

  • فہرستوں، ٹیپلز اور سیٹوں میں اتفاقی طور پر کوما غائب ہو گیا، جس کی وجہ سے تاروں کو الگ الگ قدروں سے تعبیر کرنے کے بجائے جوڑ دیا جاتا ہے۔ مثال کے طور پر، Sentry میں، ایک ٹیسٹ میں فہرست میں موجود سٹرنگز "ریلیز" اور "دریافت" کے درمیان کوما چھوٹ گیا، جس کے نتیجے میں "/ ریلیز" اور "کو چیک کرنے کے بجائے، غیر موجود "/ ریلیز ڈسکوور" ہینڈلر کو چیک کرنا پڑا۔ /دریافت" الگ سے۔
    3.6% ازگر کے ذخیروں کا تجربہ کیا گیا جس میں کوما کی غلطیاں غائب تھیں۔

    ایک اور مثال یہ ہے کہ ریپڈپرو میں ایک غائب کوما کی وجہ سے لائن 572 پر دو مختلف قواعد ضم ہو گئے:

    3.6% ازگر کے ذخیروں کا تجربہ کیا گیا جس میں کوما کی غلطیاں غائب تھیں۔

  • واحد عنصر ٹیوپل تعریف کے آخر میں ایک غائب کوما، جس کی وجہ سے اسائنمنٹ کو ٹیوپل کے بجائے ایک باقاعدہ قسم تفویض کرنا پڑتا ہے۔ مثال کے طور پر، "values ​​= (1,)" کے اظہار کے نتیجے میں ایک عنصر کے ٹیپل کے متغیر کو تفویض کیا جائے گا، لیکن "values ​​= (1)" کے نتیجے میں عددی قسم کی تفویض ہوگی۔ ان اسائنمنٹس میں قوسین قسم کی تعریف کو متاثر نہیں کرتے ہیں اور یہ اختیاری ہیں، اور ٹپل کی موجودگی کا تعین صرف کوما کی موجودگی کی بنیاد پر تجزیہ کار کے ذریعے کیا جاتا ہے۔ REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # کو ٹپل کے بجائے ایک سٹرنگ تفویض کیا جائے گا۔) }
  • اس کے برعکس صورتحال تفویض کے دوران اضافی کوما ہے۔ اگر اسائنمنٹ کے اختتام پر غلطی سے کوما چھوڑ دیا جاتا ہے تو، ایک ٹیپل کو معمول کی قسم کے بجائے قدر کے طور پر تفویض کیا جائے گا (مثال کے طور پر، اگر "قدر = 1" کی بجائے "قدر = 1" کی وضاحت کی گئی ہے)۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں