Réparation-R1 : Meilleur test avant réparation
Repair-R1: Better Test Before Repair
July 30, 2025
papers.authors: Haichuan Hu, Xiaochen Xie, Quanjun Zhang
cs.AI
papers.abstract
L'APR (Automated Program Repair, ou Réparation Automatisée de Programmes) vise à localiser automatiquement les défauts dans les programmes, générer des correctifs et valider les réparations. Les techniques existantes pour l'APR sont souvent combinées avec des LLMs (Large Language Models, ou Modèles de Langage à Grande Échelle), qui exploitent les connaissances liées au code des LLMs pour améliorer l'efficacité des réparations. Les méthodes actuelles d'APR basées sur les LLMs utilisent généralement les cas de test uniquement lors de l'étape d'inférence, adoptant une approche itérative qui effectue d'abord la réparation et la valide ensuite par l'exécution de tests. Ce paradigme conventionnel néglige deux aspects importants : la contribution potentielle des cas de test pendant la phase d'entraînement, et la possibilité d'exploiter les tests avant la réparation. Pour remédier à cela, nous proposons Repair-R1, qui intègre les cas de test dans la phase d'entraînement du modèle et déplace la génération de tests avant la réparation. Le modèle est amené à générer d'abord des cas de test discriminants capables d'identifier les comportements défectueux, puis à effectuer la réparation en se basant sur ces tests. Cela permet au modèle de mieux localiser les défauts et de comprendre les causes sous-jacentes des erreurs, améliorant ainsi l'efficacité des réparations. Nous implémentons Repair-R1 avec trois modèles de base différents, en utilisant l'apprentissage par renforcement (RL) pour co-optimiser la génération de tests et la réparation des bugs. Les résultats expérimentaux sur quatre benchmarks largement adoptés démontrent la supériorité de Repair-R1. En particulier, par rapport aux modèles classiques, Repair-R1 améliore le taux de réussite des réparations de 2,68 % à 48,29 %, le taux de réussite de la génération de tests de 16,38 % à 53,28 %, et la couverture des tests de 0,78 % à 53,96 %. Nous publions le code et les poids sur https://github.com/Tomsawyerhu/APR-RL et 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.