إصلاح البرمجة المستند إلى الرسم البياني، ذاتي التدريب من خلال ملاحظات التشخيص

نُعَدّ المشكلة المتعلقة بتعلم إصلاح البرامج من خلال التغذية الراجعة التشخيصية (مثل رسائل أخطاء المُحَوِّل). يُعد إصلاح البرامج تحديًا لسببين: أولاً، يتطلب استنتاجًا وتعقبًا للرموز عبر الشفرة المصدرية والتغذية الراجعة التشخيصية. ثانيًا، تكون المجموعات المُعلَّمة المتاحة لإنجاز إصلاح البرامج نسبيًا صغيرة. في هذه الدراسة، نُقدّم حلولًا جديدة تُواجه هذين التحديين. أولاً، نُقدّم رسمًا بيانيًا للشفرة-التغذية (program-feedback graph)، والذي يربط الرموز ذات الصلة بإصلاح البرامج في الشفرة المصدرية والتغذية الراجعة التشخيصية، ثم نطبّق شبكة عصبية رسمية (graph neural network) على هذا الرسم لمحاكاة عملية الاستنتاج. ثانيًا، نُقدّم منهجية تعلّم ذاتي (self-supervised learning paradigm) لإصلاح البرامج، تُستخدَم فيها البرامج غير المُعلَّمة المتاحة عبر الإنترنت لإنشاء كمّ كبير من أمثلة إصلاح البرامج الإضافية، والتي نستخدمها لتدريب النموذج مسبقًا. قُمنا بتقييم النهج المقترح على تطبيقيْن: إصلاح واجبات برمجة مبتدئة (مجموعة بيانات DeepFix)، وإصلاح مخرجات توليد البرامج (مجموعة بيانات SPoC). يُظهر النظام النهائي، DrRepair، تفوقًا كبيرًا على الأعمال السابقة، حيث بلغ معدل الإصلاح الكامل 68.2% على مجموعة بيانات DeepFix (+22.9% مقارنة بأفضل أداء سابق)، ونسبة نجاح في التوليد 48.4% على مجموعة بيانات SPoC (+3.7% مقارنة بأفضل أداء سابق).