← أحدث الأبحاث
🤖 AI

From Empirical Evaluation to Context-Aware Enhancement: Repairing Regression Errors with LLMs

تقدم هذه الورقة معيار RegressionBug4APR للتقييم التجريبي لإصلاح البرامج الآلي لأخطاء الارتداد (regression bugs)، كاشفةً أنه بينما تفشل الأدوات التقليدية، فإن النهج القائمة على النماذج اللغوية الكبيرة (LLM) تُحسّن معدلات نجاح الإصلاح بشكل كبير عند تعزيزها بمعلومات سياقية حول التغييرات المسببة للأخطاء.

المؤلفون الأصليون: Anh Ho, Thanh Le-Cong, Bach Le, Christine Rizkallah

نُشر 2026-08-26
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Anh Ho, Thanh Le-Cong, Bach Le, Christine Rizkallah

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

البرمجيات لا تنتهي أبداً؛ فهي كائن حي ينمو ويتغير ليلبي الاحتياجات الجديدة، حيث يعمل المطورون باستمرار على إضافة ميزات جديدة أو إصلاح مشكلات قديمة. ولكن في غمرة الاندفاع نحو التحسين، يحدث خطأ شائع ومحبط: تغييرٌ كان يهدف للمساعدة تسبب عن غير قصد في كسر شيء كان يعمل بشكل مثالي من قبل. يُسمى هذا "تراجعاً" (Regression). تخيل أنك تقوم بإصلاح تسرب في سقف، ولكن أثناء العملية، اصطدمت بالجدار وتسببت في ثقب فيه بالخطأ. لقد اختفى التسرب، ولكن أصبح لديك الآن مشكلة جديدة وأكبر. في عالم البرمجيات، يصعب العثور على هذه التراجعات وإصلاحها بشكل ملحوظ لأنها تكون مخفية في تاريخ تغييرات الكود، وغالباً ما تظل كامنة لسنوات قبل أن يلاحظها أحد. لعقود من الزمن، حاول الباحثون بناء برامج حاسوبية يمكنها إصلاح هذه الأخطاء تلقائياً، آملين في إنقاذ المطورين البشر من ساعات طويلة من استكشاف الأخطاء وإصلاحها. ومع ذلك، فإن الأدوات التي بنوها كانت مصم دسته في الغالب للأخطاء العامة، وعانت عندما واجهت الطبيعة التاريخية المحددة للتراجع.

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

ومع وجود هذه المجموعة الجديدة بين أيديهم، وضع الباحثون أدوات الإصلاح المختلفة قيد الاختبار. أولاً، جربوا الأدوات الآلية التقليدية التي استُخدمت لسنوات. تعمل هذه الأدوات عن طريق تخمين تغييرات صغيرة في الكود، مثل استبدال كلمة أو حذف سطر، لمعرفة ما إذا كان الخطأ سيختفي. كانت النتائج صارخة: فشلت هذه الأدوات التقليدية في إصلاح خطأ واحد من بين الـ 200 خطأ. ببساطة، لم تتمكن من التعامل مع تعقيد هذه الأخطاء المحددة. ثم انتقل الباحثون إلى نماذج الذكاء الاصطناعي الأحدث والأكثر قوة. حققت هذه النماذج أداءً أفضل بكثير، حيث نجحت النماذج الأكثر تقدماً في إصلاح عدد كبير من الأخطاء. ومع ذلك، لاحظ الباحثون أن النماذج كانت لا تزال تخمن في الظلام؛ فقد أُعطيت الكود المعطل ورسالة الخطأ، لكن لم يتم إخبارها بالتغيير المحدد في تاريخ البرنامج الذي تسبب في العطل.

ولرؤية ما إذا كان منح النماذج المزيد من السياق سيساعد، جرب الباحثون نهجاً جديداً. فقد قاموا بتغذية الذكاء الاصطناعي بتغييرات الكود الدقيقة التي أدخلت الخطأ، جنباً إلى جنب مع الملاحظات التي كتبها المطور الأصلي عند إجراء ذلك التغيير. هذا يش similar إلى إعطاء ميكانيكي ليس فقط السيارة المعطلة، بل أيضاً المفتاح المحدد الذي استخدمه لشد البرغي الذي تسبب في المشكلة. عندما مُنحت النماذج هذه المعلومات الإضافية حول "التغيير المسبب للخطأ"، قفز أداؤها بشكل كبير. التجهيز الأفضل، الذي استخدم أسلوباً حوارياً حيث يمكن للنموذج طلب التغذية الراجعة والمحاولة مرة أخرى، تمكن من إصلاح 39 خطأ من أصل 200. كان هذا تحسناً بمقدار 1.6 مرة مقارنة بنفس النموذج بدون التاريخ الإضافي. وجد الباحثون أن هذا السياق ساعد النماذج على فهم السبب الجذري للخطأ، مما سمح لها بتقرير ما إذا كان ينبغي ببساطة التراجع عن التغيير السيئ أو إجراء تصحيح أكثر دقة يحافظ على الأجزاء الجيدة من التحديث مع إصلاح الأجزاء السيئة.

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →