ChatPaper.aiChatPaper

Inwiefern können wir mit praktischer funktionsbasierter Programmreparatur gehen?

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

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

Zusammenfassung

In letzter Zeit wurden mehrere automatisierte Programmreparatur (APR)-Techniken auf der Grundlage großer Sprachmodelle (LLMs) vorgeschlagen, um die Reparaturleistung zu verbessern. Während diese Techniken hauptsächlich auf der Reparatur auf Einzelzeilen- oder Hunk-Ebene basieren, sehen sie sich in der realen Anwendung aufgrund des begrenzten Reparaturaufgabenbereichs und der kostspieligen Fehlerlokalisierung auf Anweisungsebene erheblichen Herausforderungen gegenüber. Die praktischere Funktionsebene der APR, die den Aufgabenbereich der APR erweitert, um gesamte fehlerhafte Funktionen zu reparieren und nur eine kostengünstige Fehlerlokalisierung auf Funktionsebene erfordert, bleibt jedoch weitgehend unerforscht. In diesem Artikel führen wir die erste umfassende Studie zur LLM-basierten APR auf Funktionsebene durch, einschließlich der Untersuchung der Auswirkungen des Few-Shot-Lernmechanismus und der zusätzlichen reparaturrelevanten Informationen. Konkret verwenden wir sechs weit verbreitete LLMs und erstellen einen Benchmark sowohl in den Datensätzen Defects4J 1.2 als auch 2.0. Unsere Studie zeigt, dass LLMs mit Zero-Shot-Lernen bereits leistungsstarke Techniken zur APR auf Funktionsebene sind, während die Anwendung des Few-Shot-Lernmechanismus zu unterschiedlichen Reparaturleistungen führt. Darüber hinaus stellen wir fest, dass die direkte Anwendung der zusätzlichen reparaturrelevanten Informationen auf LLMs die Reparaturleistung auf Funktionsebene signifikant erhöht. Inspiriert von unseren Ergebnissen schlagen wir eine LLM-basierte APR-Technik auf Funktionsebene vor, nämlich SRepair, die ein Dual-LLM-Framework verwendet, um die Kraft der zusätzlichen reparaturrelevanten Informationen zur Verbesserung der Reparaturleistung zu nutzen. Die Evaluierungsergebnisse zeigen, dass SRepair 300 einzelne Funktionsfehler im Defects4J-Datensatz korrekt beheben kann und dabei alle bisherigen APR-Techniken um mindestens 85% übertrifft, ohne die kostspielige Fehlerlokalisierung auf Anweisungsebene zu benötigen. Darüber hinaus behebt SRepair erfolgreich 32 mehrfunktionale Fehler im Defects4J-Datensatz, was unseres Wissens nach erstmals von einer APR-Technik erreicht wurde.
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