أصدرت إنتل الكود المصدري لـ ControlFlag وهو نظام تعلم آلي لاكتشاف الأخطاء في الكود

كشف النقاب عن إنتل من خلال إعلان التطورات المتعلقة بمشروع البحث ControlFlag ، الذي يهدف إلى إنشاء نظام تعلم آلي لتحسين جودة الكود.

تم إصدار الأداة بموجب ترخيص MIT. وهي تتميز بالسماح ، من نموذج تم تدريبه على كمية كبيرة من التعليمات البرمجية الموجودة ، بتحديد الأخطاء والتشوهات المختلفة في النصوص المصدر المكتوبة بلغات عالية المستوى مثل C / C ++.

النظام إنه مناسب للكشف عن أنواع مختلفة من المشاكل في التعليمات البرمجية الخاصة بك ، من اكتشاف الأخطاء الإملائية وتركيبات الأنواع غير الصحيحة ، إلى تحديد عمليات التحقق المفقودة للقيم الخالية في المؤشرات ومشكلات الذاكرة.

يتعلم النظام بنفسه من خلال بناء نموذج إحصائي من المصفوفة الحالية للشفرة مفتوحة المصدر المنشورة على GitHub والمستودعات العامة المماثلة. في مرحلة التدريب ، يحدد النظام القوالب النموذجية لبناء هياكل في الكود وبناء شجرة بناء جملة من الاتصالات بين هذه القوالب ، مما يعكس تدفق تنفيذ الكود في البرنامج. نتيجة لذلك ، يتم تشكيل شجرة قرار مرجعي ، والتي تجمع بين خبرة التطوير لجميع النصوص المصدر التي تم تحليلها.

لإتاحة ControlFlag بشكل أكبر لمجتمع تطوير البرامج الأوسع ، يسر Intel أن تعلن أن ControlFlag أصبحت الآن مفتوحة المصدر ويمكن الوصول إليها على https://github.com/IntelLabs/control-flag. يسعدنا أن نمنح المطورين الفرصة للبناء عليها ومعرفة ما يمكن القيام به باستخدام هذه التكنولوجيا القيمة والمبتكرة للغاية.

منذ تقديمه ، تم اختبار ControlFlag على برمجيات من فئة الإنتاج وأنظمة برمجيات مفتوحة المصدر مستخدمة على نطاق واسع. على سبيل المثال ، في العام الماضي ، حددت ControlFlag شذوذًا في الكود في عنوان URL للعميل (cURL) ، وهو مشروع برمجيات كمبيوتر ينقل البيانات باستخدام بروتوكولات الشبكة المختلفة أكثر من مليار مرة في اليوم. بعد إبلاغ فريق cURL بالشذوذ ، وافقوا على نتائج ControlFlag وقاموا بعد ذلك بتصحيح الكود الخاص بهم.

يتم تنفيذ عملية تعريف نمط مماثلة للكود قيد الاختبار.، والتي تتم مقارنتها بشجرة قرارات مرجعية. تشير الاختلافات الكبيرة مع الفروع المجاورة إلى وجود خلل في النمط الذي يتم التحقق منه. لا يسمح النظام أيضًا بتحديد الخطأ في النموذج فحسب ، بل يتيح أيضًا اقتراح حل. على سبيل المثال ، عند تحليل مقتطف الشفرة "if (x = 7) y = x؛" حدد النظام أن "المتغير == رقم" يتم استخدامه بشكل عام في عبارة "if" لمقارنة القيم الرقمية ، لذلك من المحتمل أن يكون مؤشر "المتغير = الرقم" في عبارة "if" ناتجًا عن خطأ إملائي.

يمكن للمحللين الساكنين التقليديين اكتشاف مثل هذا الخطأ ، ولكن على عكسهم ، لا يطبق ControlFlag القواعد الجاهزة ، حيث يصعب توقع جميع الخيارات الممكنة ، ولكن بدلاً من ذلك يأخذ الإحصائيات من استخدام جميع أنواع التركيبات. عدد كبير من المشاريع.

أثناء تجربتي ، عند استخدام ControlFlag في الكود المصدري لأداة cURL ، غالباً كمثال من الكود عالي الجودة والمختبر والمحللات الثابتة كشف خطأ غير مقصود عند استخدام عنصر البنية "s-> keepon" ، التي لها نوع رقمي ، ولكن تمت مقارنتها بالقيمة المنطقية TRUE.

في كود OpenSSL ، بالإضافة إلى المشكلة المذكورة أعلاه مع "(s1 == NULL) ∧ (s2 == NULL)" ، كانت هناك أيضًا حالات شاذة في التعبيرات "(-2 == rv)" كانت أقل خطأ إملائي .

يُذكر أيضًا أن استخدام ControlFlag جعل من الممكن تحديد عدة مئات من الأخطاء في البرامج الاحتكارية غير المحددة ، مما أدى إلى حدوث أعطال ومشاكل في الذاكرة.

أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي. أما بالنسبة للراغبين في الاطلاع على الكود المصدري أو الحصول عليه أو استنساخه في المستودع ، فيمكنهم فعل ذلك من الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.