Réparation de programmes auto-supervisée basée sur les graphes à partir de retours diagnostiques

Nous abordons le problème de l’apprentissage de la réparation de programmes à partir de retours diagnostiques (par exemple, messages d’erreur du compilateur). La réparation de programmes est un défi pour deux raisons principales : premièrement, elle nécessite une raisonnement et un suivi des symboles entre le code source et les messages de diagnostic ; deuxièmement, les jeux de données étiquetés disponibles pour la réparation de programmes sont relativement petits. Dans ce travail, nous proposons de nouvelles solutions à ces deux défis. Premièrement, nous introduisons un graphe programme-retour, qui relie les symboles pertinents pour la réparation de programmes dans le code source et les messages de diagnostic, puis appliquons un réseau de neurones sur graphe pour modéliser le processus de raisonnement. Deuxièmement, nous présentons un paradigme d’apprentissage auto-supervisé pour la réparation de programmes, qui exploite des programmes non étiquetés disponibles en ligne afin de générer un grand nombre d’exemples supplémentaires de réparation de programmes, que nous utilisons pour pré-entraîner nos modèles. Nous évaluons notre approche proposée sur deux applications : la correction d’exercices de programmation introductifs (jeu de données DeepFix) et la correction des sorties de synthèse de programmes (jeu de données SPoC). Notre système final, DrRepair, surpasser considérablement les travaux antérieurs, atteignant un taux de réparation complète de 68,2 % sur DeepFix (+22,9 % par rapport au meilleur résultat antérieur), et un taux de réussite de synthèse de 48,4 % sur SPoC (+3,7 % par rapport au meilleur résultat antérieur).