ChatPaper.aiChatPaper

Fino a Dove Possiamo Arrivare con la Riparazione Pratica dei Programmi a Livello di Funzione?

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

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

Abstract

Recentemente, sono state proposte diverse tecniche di Automated Program Repair (APR) basate su Large Language Models (LLMs) per migliorare le prestazioni di riparazione. Sebbene queste tecniche si concentrino principalmente sulla riparazione a livello di singola riga o di hunk, affrontano sfide significative nell'applicazione reale a causa del limitato ambito delle attività di riparazione e del costoso processo di localizzazione degli errori a livello di istruzione. Tuttavia, l'APR a livello di funzione, più pratico e che amplia l'ambito delle attività di riparazione per correggere intere funzioni difettose richiedendo solo una localizzazione degli errori a livello di funzione economicamente efficiente, rimane poco esplorato. In questo articolo, conduciamo il primo studio completo sull'APR a livello di funzione basato su LLM, includendo l'indagine sull'effetto del meccanismo di few-shot learning e delle informazioni ausiliarie rilevanti per la riparazione. Nello specifico, adottiamo sei LLM ampiamente studiati e costruiamo un benchmark sui dataset Defects4J 1.2 e 2.0. Il nostro studio dimostra che gli LLM con zero-shot learning sono già tecniche potenti per l'APR a livello di funzione, mentre l'applicazione del meccanismo di few-shot learning porta a prestazioni di riparazione disparate. Inoltre, scopriamo che l'applicazione diretta delle informazioni ausiliarie rilevanti per la riparazione agli LLM aumenta significativamente le prestazioni di riparazione a livello di funzione. Ispirati dalle nostre scoperte, proponiamo una tecnica di APR a livello di funzione basata su LLM, denominata SRepair, che adotta un framework dual-LLM per sfruttare il potere delle informazioni ausiliarie rilevanti per la riparazione al fine di migliorare le prestazioni di riparazione. I risultati della valutazione dimostrano che SRepair può correggere correttamente 300 bug a singola funzione nel dataset Defects4J, superando ampiamente tutte le precedenti tecniche APR di almeno l'85%, senza la necessità delle costose informazioni di localizzazione degli errori a livello di istruzione. Inoltre, SRepair corregge con successo 32 bug a più funzioni nel dataset Defects4J, un risultato raggiunto per la prima volta da qualsiasi tecnica APR, a nostra conoscenza.
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.
PDF71February 8, 2026