ChatPaper.aiChatPaper

Repair-R1: Bessere Tests vor der Reparatur

Repair-R1: Better Test Before Repair

July 30, 2025
papers.authors: Haichuan Hu, Xiaochen Xie, Quanjun Zhang
cs.AI

papers.abstract

APR (Automated Program Repair) zielt darauf ab, Programmfehler automatisch zu lokalisieren, Patches zu generieren und die Reparaturen zu validieren. Bestehende Techniken für APR werden häufig mit LLMs (Large Language Models) kombiniert, die das codebezogene Wissen der LLMs nutzen, um die Reparaturwirksamkeit zu verbessern. Aktuelle LLM-basierte APR-Methoden verwenden Testfälle typischerweise nur während der Inferenzphase und verfolgen einen iterativen Ansatz, bei dem zunächst eine Reparatur durchgeführt und diese anschließend durch Testausführung validiert wird. Dieses konventionelle Paradigma vernachlässigt zwei wichtige Aspekte: den potenziellen Beitrag von Testfällen in der Trainingsphase und die Möglichkeit, Tests vor der Reparatur zu nutzen. Um dies zu adressieren, schlagen wir Repair-R1 vor, das Testfälle in die Trainingsphase des Modells einführt und die Testgenerierung vor die Reparatur verlagert. Das Modell muss zunächst diskriminative Testfälle generieren, die fehlerhaftes Verhalten erkennen können, und dann basierend auf diesen Tests die Reparatur durchführen. Dies ermöglicht es dem Modell, Fehler besser zu lokalisieren und die zugrunde liegenden Ursachen von Fehlern zu verstehen, wodurch die Reparaturwirksamkeit verbessert wird. Wir implementieren Repair-R1 mit drei verschiedenen Basismodellen und verwenden RL (Reinforcement Learning), um die Testgenerierung und die Fehlerbehebung gemeinsam zu optimieren. Experimentelle Ergebnisse auf vier weit verbreiteten Benchmarks demonstrieren die Überlegenheit von Repair-R1. Insbesondere verbessert Repair-R1 im Vergleich zu Standardmodellen die Reparaturerfolgsrate um 2,68\% bis 48,29\%, die Testgenerierungserfolgsrate um 16,38\% bis 53,28\% und die Testabdeckung um 0,78\% bis 53,96\%. Wir veröffentlichen den Code und die Gewichte unter https://github.com/Tomsawyerhu/APR-RL und https://huggingface.co/tomhu/Qwen3-4B-RL-5000-step.
English
APR (Automated Program Repair) aims to automatically locate program defects, generate patches and validate the repairs. Existing techniques for APR are often combined with LLMs (Large Language Models), which leverages the code-related knowledge of LLMs to improve repair effectiveness. Current LLM-based APR methods typically utilize test cases only during the inference stage, adopting an iterative approach that performs repair first and validates it through test execution afterward. This conventional paradigm neglects two important aspects: the potential contribution of test cases in the training phase, and the possibility of leveraging testing prior to repair. To address this, we propose Repair-R1, which introduces test cases into the model's training phase and shifts test generation to precede repair. The model is required to first generate discriminative test cases that can distinguish defective behaviors, and then perform repair based on these tests. This enables the model to better locate defects and understand the underlying causes of defects, thereby improving repair effectiveness. We implement Repair-R1 with three different backbone models, using RL (reinforcement learning) to co-optimize test generation and bug repair. Experimental results on four widely adopted benchmarks demonstrate the superiority of Repair-R1. Specially, compared to vanilla models, Repair-R1 improves repair success rate by 2.68\% to 48.29\%, test generation success rate by 16.38\% to 53.28\%, and test coverage by 0.78\% to 53.96\%. We publish the code and weights at https://github.com/Tomsawyerhu/APR-RL and https://huggingface.co/tomhu/Qwen3-4B-RL-5000-step.
PDF82July 31, 2025