ChatPaper.aiChatPaper

Repair-R1: Beter Testen Voordat Wordt Gerepareerd

Repair-R1: Better Test Before Repair

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

Samenvatting

APR (Automated Program Repair) heeft als doel om programmadefecten automatisch te lokaliseren, patches te genereren en de reparaties te valideren. Bestaande technieken voor APR worden vaak gecombineerd met LLMs (Large Language Models), waarbij de codegerelateerde kennis van LLMs wordt benut om de effectiviteit van de reparaties te verbeteren. Huidige LLM-gebaseerde APR-methoden maken typisch alleen gebruik van testgevallen tijdens de inferentiefase, waarbij een iteratieve aanpak wordt gehanteerd die eerst repareert en vervolgens de reparatie valideert door middel van testuitvoering. Dit conventionele paradigma negeert twee belangrijke aspecten: de potentiële bijdrage van testgevallen in de trainingsfase, en de mogelijkheid om testen te benutten vóór de reparatie. Om dit aan te pakken, stellen we Repair-R1 voor, dat testgevallen introduceert in de trainingsfase van het model en testgeneratie naar voren schuift om voorafgaand aan de reparatie plaats te vinden. Het model wordt verplicht om eerst discriminerende testgevallen te genereren die defectief gedrag kunnen onderscheiden, en vervolgens de reparatie uit te voeren op basis van deze tests. Hierdoor kan het model defecten beter lokaliseren en de onderliggende oorzaken van defecten beter begrijpen, wat de effectiviteit van de reparatie verbetert. We implementeren Repair-R1 met drie verschillende backbone-modellen, waarbij RL (reinforcement learning) wordt gebruikt om testgeneratie en bugreparatie gezamenlijk te optimaliseren. Experimentele resultaten op vier veelgebruikte benchmarks tonen de superioriteit van Repair-R1 aan. Specifiek, in vergelijking met standaardmodellen, verbetert Repair-R1 het reparatiesuccespercentage met 2,68\% tot 48,29\%, het testgeneratiesuccespercentage met 16,38\% tot 53,28\%, en de testdekking met 0,78\% tot 53,96\%. We publiceren de code en gewichten op https://github.com/Tomsawyerhu/APR-RL en 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