ChatPaper.aiChatPaper

Repair-R1: Melhor Teste Antes do Reparo

Repair-R1: Better Test Before Repair

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

Resumo

O APR (Reparo Automatizado de Programas) visa localizar automaticamente defeitos em programas, gerar correções e validar os reparos. As técnicas existentes para APR são frequentemente combinadas com LLMs (Modelos de Linguagem de Grande Escala), que aproveitam o conhecimento relacionado a código dos LLMs para melhorar a eficácia do reparo. Os métodos atuais de APR baseados em LLMs geralmente utilizam casos de teste apenas durante a etapa de inferência, adotando uma abordagem iterativa que realiza o reparo primeiro e o valida através da execução de testes posteriormente. Esse paradigma convencional negligencia dois aspectos importantes: a contribuição potencial dos casos de teste na fase de treinamento e a possibilidade de aproveitar os testes antes do reparo. Para abordar isso, propomos o Repair-R1, que introduz casos de teste na fase de treinamento do modelo e desloca a geração de testes para preceder o reparo. O modelo é obrigado a primeiro gerar casos de teste discriminativos que podem distinguir comportamentos defeituosos e, em seguida, realizar o reparo com base nesses testes. Isso permite que o modelo localize melhor os defeitos e compreenda as causas subjacentes dos defeitos, melhorando assim a eficácia do reparo. Implementamos o Repair-R1 com três modelos de base diferentes, usando RL (aprendizado por reforço) para co-otimizar a geração de testes e o reparo de bugs. Os resultados experimentais em quatro benchmarks amplamente adotados demonstram a superioridade do Repair-R1. Especificamente, em comparação com modelos convencionais, o Repair-R1 melhora a taxa de sucesso de reparo em 2,68% a 48,29%, a taxa de sucesso de geração de testes em 16,38% a 53,28% e a cobertura de testes em 0,78% a 53,96%. Publicamos o código e os pesos em https://github.com/Tomsawyerhu/APR-RL e 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.
PDF92July 31, 2025