ChatPaper.aiChatPaper

Jusqu'où pouvons-nous aller avec la réparation pratique de programmes au niveau des fonctions ?

How Far Can We Go with Practical Function-Level Program Repair?

April 19, 2024
Auteurs: Jiahong Xiang, Xiaoyang Xu, Fanchu Kong, Mingyuan Wu, Haotian Zhang, Yuqun Zhang
cs.AI

Résumé

Récemment, plusieurs techniques de réparation automatique de programmes (APR) basées sur les grands modèles de langage (LLM) ont été proposées pour améliorer les performances de réparation. Bien que ces techniques se concentrent principalement sur la réparation au niveau d'une seule ligne ou d'un bloc de code, elles rencontrent des défis importants dans les applications réelles en raison de la portée limitée des tâches de réparation et de la localisation coûteuse des fautes au niveau des instructions. Cependant, l'APR au niveau des fonctions, plus pratique, qui élargit la portée des tâches de réparation pour corriger des fonctions entières et ne nécessite qu'une localisation des fautes au niveau des fonctions peu coûteuse, reste peu explorée. Dans cet article, nous menons la première étude exhaustive de l'APR au niveau des fonctions basée sur les LLM, en examinant notamment l'effet du mécanisme d'apprentissage en few-shot et des informations auxiliaires pertinentes pour la réparation. Plus précisément, nous adoptons six LLM largement étudiés et construisons un benchmark sur les ensembles de données Defects4J 1.2 et 2.0. Notre étude démontre que les LLM avec apprentissage en zero-shot sont déjà des techniques puissantes pour l'APR au niveau des fonctions, tandis que l'application du mécanisme d'apprentissage en few-shot conduit à des performances de réparation disparates. De plus, nous constatons que l'application directe des informations auxiliaires pertinentes pour la réparation aux LLM augmente significativement les performances de réparation au niveau des fonctions. Inspirés par nos résultats, nous proposons une technique d'APR au niveau des fonctions basée sur les LLM, nommée SRepair, qui adopte un cadre à double LLM pour exploiter la puissance des informations auxiliaires pertinentes pour la réparation afin d'améliorer les performances de réparation. Les résultats d'évaluation montrent que SRepair peut corriger correctement 300 bogues de fonctions uniques dans l'ensemble de données Defects4J, surpassant largement toutes les techniques APR précédentes d'au moins 85 %, sans nécessiter d'informations coûteuses sur la localisation des fautes au niveau des instructions. En outre, SRepair corrige avec succès 32 bogues multi-fonctions dans l'ensemble de données Defects4J, ce qui constitue une première pour toute technique APR à notre connaissance.
English
Recently, multiple Automated Program Repair (APR) techniques based on Large Language Models (LLMs) have been proposed to enhance the repair performance. While these techniques mainly focus on the single-line or hunk-level repair, they face significant challenges in real-world application due to the limited repair task scope and costly statement-level fault localization. However, the more practical function-level APR, which broadens the scope of APR task to fix entire buggy functions and requires only cost-efficient function-level fault localization, remains underexplored. In this paper, we conduct the first comprehensive study of LLM-based function-level APR including investigating the effect of the few-shot learning mechanism and the auxiliary repair-relevant information. Specifically, we adopt six widely-studied LLMs and construct a benchmark in both the Defects4J 1.2 and 2.0 datasets. Our study demonstrates that LLMs with zero-shot learning are already powerful function-level APR techniques, while applying the few-shot learning mechanism leads to disparate repair performance. Moreover, we find that directly applying the auxiliary repair-relevant information to LLMs significantly increases function-level repair performance. Inspired by our findings, we propose an LLM-based function-level APR technique, namely SRepair, which adopts a dual-LLM framework to leverage the power of the auxiliary repair-relevant information for advancing the repair performance. The evaluation results demonstrate that SRepair can correctly fix 300 single-function bugs in the Defects4J dataset, largely surpassing all previous APR techniques by at least 85%, without the need for the costly statement-level fault location information. Furthermore, SRepair successfully fixes 32 multi-function bugs in the Defects4J dataset, which is the first time achieved by any APR technique ever to our best knowledge.

Summary

AI-Generated Summary

PDF71December 15, 2024