هل تنتج نماذج التعلم الآلي أنواع TypeScript التي تخضع لفحص الأنواع؟
Author
Venue
المؤتمر الأوروبي للبرمجة الموجهة للكائنات (ECOOP) 2023
Abstract
ترحيل الأنواع هو عملية إضافة أنواع إلى كود غير مصنف للحصول على ضمان في وقت التحويل البرمجي. يسهل TypeScript وأنظمة الأنواع التدريجية الأخرى عملية ترحيل الأنواع من خلال السماح للمبرمجين بالبدء بأنواع غير دقيقة وتعزيزها تدريجيًا. ومع ذلك، فإن إضافة الأنواع هي عملية يدوية، وقد أفادت التقارير أن العديد من عمليات الترحيل على قواعد كود صناعية كبيرة استغرقت عدة سنوات. في مجتمع الأبحاث، كان هناك اهتمام كبير باستخدام التعلم الآلي لأتمتة ترحيل أنواع TypeScript. تشير نماذج التعلم الآلي الحالية إلى درجة عالية من الدقة في توقع التعليقات التوضيحية الفردية لأنواع TypeScript. ومع ذلك، نجادل في هذه الورقة بأن الدقة قد تكون مضللة، وينبغي أن نتناول سؤالًا مختلفًا: هل يمكن لأداة ترحيل الأنواع التلقائية إنتاج كود يجتاز مدقق أنواع TypeScript؟ نقدم TypeWeaver، وهي أداة ترحيل أنواع TypeScript يمكن استخدامها مع نموذج توقع أنواع تعسفي. نقوم بتقييم TypeWeaver باستخدام ثلاثة نماذج من الأدبيات: DeepTyper، وهي شبكة عصبية متكررة؛ و LambdaNet، وهي شبكة عصبية بيانية؛ و InCoder، وهو محول متعدد اللغات للأغراض العامة يدعم مهام "ملء الفراغات". تعمل أداتنا على أتمتة عدة خطوات ضرورية لاستخدام نموذج توقع الأنواع، (1) استيراد الأنواع لتبعيات المشروع؛ (2) ترحيل وحدات JavaScript إلى ترميز TypeScript؛ (3) إدراج تعليقات الأنواع المتوقعة في البرنامج لإنتاج TypeScript عند الحاجة؛ و (4) رفض التنبؤات غير المتعلقة بالأنواع عند الحاجة. نقوم بتقييم TypeWeaver على مجموعة بيانات تضم 513 حزمة JavaScript، بما في ذلك الحزم التي لم يتم تحديد أنواعها من قبل. باستخدام أفضل نموذج للتنبؤ بالأنواع، وجدنا أن 21% فقط من الحزم اجتازت فحص الأنواع، ولكن الأمر الأكثر تشجيعًا هو أن 69% من الملفات اجتازت فحص الأنواع بنجاح.
