کنٹرول فلیگ 1.0 کی ریلیز، سی کوڈ میں غلطیوں کی نشاندہی کرنے کا ایک ٹول

Intel نے ControlFlag 1.0 ٹول کی پہلی بڑی ریلیز شائع کی ہے، جو آپ کو موجودہ کوڈ کی ایک بڑی مقدار پر تربیت یافتہ مشین لرننگ سسٹم کا استعمال کرتے ہوئے سورس کوڈ میں غلطیوں اور بے ضابطگیوں کی نشاندہی کرنے کی اجازت دیتا ہے۔ روایتی جامد تجزیہ کاروں کے برعکس، ControlFlag تیار شدہ اصولوں کا اطلاق نہیں کرتا، جس میں تمام ممکنہ آپشنز فراہم کرنا مشکل ہے، لیکن یہ موجودہ پروجیکٹس کی ایک بڑی تعداد میں مختلف زبان کی تعمیرات کے استعمال کے اعدادوشمار پر مبنی ہے۔ ControlFlag کوڈ C++ میں لکھا گیا ہے اور MIT لائسنس کے تحت اوپن سورس ہے۔

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

کنٹرول فلیگ 1.0 کی ریلیز، سی کوڈ میں غلطیوں کی نشاندہی کرنے کا ایک ٹول

ControlFlag کی صلاحیتوں کی ایک مثال کے طور پر، ڈویلپرز نے OpenSSL اور cURL پروجیکٹس کے سورس کوڈز کا تجزیہ کیا:

  • غیر معمولی تعمیرات "(s1 == NULL) ∧ (s2 == NULL)" اور "(s1 == NULL) | (s2 == NULL)"، جو عام طور پر استعمال ہونے والے پیٹرن سے میل نہیں کھاتے ہیں" (s1 == NULL) || (s2 == NULL)"۔ کوڈ نے "(-2 == rv)" (مائنس ایک ٹائپو تھا) اور "BIO_puts(bp, ":") <= 0)" (کی کامیاب تکمیل کو جانچنے کے تناظر میں) میں بے ضابطگیوں کی بھی نشاندہی کی۔ فنکشن اسے "== 0" ہونا چاہئے تھا)۔
  • سی یو آر ایل میں، ایک ایسی خرابی کا پتہ چلا جو جامد تجزیہ کاروں کے ذریعہ ساختی عنصر "s->کیپون" کا استعمال کرتے وقت نہیں پایا گیا، جس کی عددی قسم تھی، لیکن اس کا موازنہ بولین ویلیو TRUE سے کیا گیا۔

ControlFlag 1.0 ورژن کی خصوصیات میں سے، C زبان کے معیاری ٹیمپلیٹس کے لیے مکمل تعاون اور مشروط "اگر" اظہار میں بے ضابطگیوں کا پتہ لگانے کی صلاحیت موجود ہے۔ مثال کے طور پر، کوڈ کے ٹکڑے کا تجزیہ کرتے وقت "if (x = 7) y = x؛" سسٹم اس بات کا تعین کرے گا کہ "اگر" بیان عام طور پر عددی اقدار کا موازنہ کرنے کے لیے "متغیر == نمبر" کی تعمیر کا استعمال کرتا ہے، لہذا اس بات کا بہت زیادہ امکان ہے کہ "اگر" اظہار میں "متغیر = نمبر" ٹائپنگ کی وجہ سے ہوا ہو۔ کٹ میں ایک اسکرپٹ شامل ہے جو آپ کو GitHub پر موجودہ C زبان کے ذخیروں کو ڈاؤن لوڈ کرنے اور ماڈل بنانے کے لیے استعمال کرنے کی اجازت دیتا ہے۔ ریڈی میڈ ماڈلز بھی دستیاب ہیں، جو آپ کو فوری طور پر کوڈ کی جانچ شروع کرنے کی اجازت دیتے ہیں۔

ماخذ: opennet.ru

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