Intel نے کوڈ میں کیڑے کی شناخت کے لیے ControlFlag مشین لرننگ سسٹم کوڈ کھولا۔

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

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

زیر نظر کوڈ پیٹرن کی شناخت کے اسی طرح کے عمل سے گزرتا ہے جن کی جانچ ریفرنس فیصلے کے درخت کے خلاف کی جاتی ہے۔ ہمسایہ شاخوں کے ساتھ بڑے تضادات چیک کیے جانے والے پیٹرن میں بے ضابطگی کی موجودگی کی نشاندہی کرتے ہیں۔ یہ نظام آپ کو نہ صرف ٹیمپلیٹ میں کسی غلطی کی نشاندہی کرنے کی اجازت دیتا ہے، بلکہ اصلاح کی تجویز بھی دیتا ہے۔ مثال کے طور پر، OpenSSL کوڈ میں، "(s1 == NULL) ∧ (s2 == NULL)" کی تعمیر کی نشاندہی کی گئی تھی، جو نحوی درخت میں صرف 8 بار ظاہر ہوئی، جب کہ قدر کے ساتھ قریب ترین شاخ "(s1 == NULL) || (s2 == NULL)" تقریباً 7 ہزار بار آیا۔ سسٹم نے ایک بے ضابطگی کا بھی پتہ لگایا “(s1 == NULL) | (s2 == NULL)" جو درخت میں 32 بار ظاہر ہوا۔

Intel نے کوڈ میں کیڑے کی شناخت کے لیے ControlFlag مشین لرننگ سسٹم کوڈ کھولا۔

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

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

ماخذ: opennet.ru

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