ChatPaper.aiChatPaper

Reparar-R1: Mejor Prueba Antes de Reparar

Repair-R1: Better Test Before Repair

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

Resumen

APR (Reparación Automatizada de Programas) tiene como objetivo localizar automáticamente defectos en programas, generar parches y validar las reparaciones. Las técnicas existentes para APR a menudo se combinan con LLMs (Modelos de Lenguaje de Gran Escala), que aprovechan el conocimiento relacionado con el código de los LLMs para mejorar la efectividad de la reparación. Los métodos actuales de APR basados en LLM suelen utilizar casos de prueba únicamente durante la etapa de inferencia, adoptando un enfoque iterativo que realiza primero la reparación y luego la valida mediante la ejecución de pruebas. Este paradigma convencional pasa por alto dos aspectos importantes: la contribución potencial de los casos de prueba en la fase de entrenamiento y la posibilidad de aprovechar las pruebas antes de la reparación. Para abordar esto, proponemos Repair-R1, que introduce casos de prueba en la fase de entrenamiento del modelo y traslada la generación de pruebas para que preceda a la reparación. El modelo debe primero generar casos de prueba discriminativos que puedan distinguir comportamientos defectuosos y luego realizar la reparación basándose en estas pruebas. Esto permite que el modelo localice mejor los defectos y comprenda las causas subyacentes de los mismos, mejorando así la efectividad de la reparación. Implementamos Repair-R1 con tres modelos base diferentes, utilizando RL (aprendizaje por refuerzo) para co-optimizar la generación de pruebas y la reparación de errores. Los resultados experimentales en cuatro puntos de referencia ampliamente adoptados demuestran la superioridad de Repair-R1. Específicamente, en comparación con los modelos convencionales, Repair-R1 mejora la tasa de éxito de reparación en un 2.68\% a 48.29\%, la tasa de éxito de generación de pruebas en un 16.38\% a 53.28\% y la cobertura de pruebas en un 0.78\% a 53.96\%. Publicamos el código y los pesos en https://github.com/Tomsawyerhu/APR-RL y 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