ChatPaper.aiChatPaper

Repair-R1: Улучшенное тестирование перед ремонтом

Repair-R1: Better Test Before Repair

July 30, 2025
Авторы: Haichuan Hu, Xiaochen Xie, Quanjun Zhang
cs.AI

Аннотация

APR (Automated Program Repair, Автоматизированное исправление программ) направлен на автоматическое обнаружение дефектов в программах, генерацию исправлений и их валидацию. Существующие методы APR часто комбинируются с LLM (Large Language Models, Большие языковые модели), что позволяет использовать знания LLM, связанные с кодом, для повышения эффективности исправлений. Современные LLM-ориентированные методы APR обычно используют тестовые примеры только на этапе вывода, применяя итеративный подход, при котором сначала выполняется исправление, а затем его валидация через выполнение тестов. Этот традиционный подход упускает два важных аспекта: потенциальный вклад тестовых примеров на этапе обучения и возможность использования тестирования до выполнения исправления. Для решения этой проблемы мы предлагаем Repair-R1, который вводит тестовые примеры в фазу обучения модели и переносит генерацию тестов на этап, предшествующий исправлению. Модель сначала должна генерировать дискриминативные тестовые примеры, способные выявить дефектное поведение, а затем выполнять исправление на основе этих тестов. Это позволяет модели более точно локализовать дефекты и понимать их причины, тем самым повышая эффективность исправлений. Мы реализовали Repair-R1 с использованием трех различных базовых моделей, применяя RL (reinforcement learning, обучение с подкреплением) для совместной оптимизации генерации тестов и исправления ошибок. Экспериментальные результаты на четырех широко используемых бенчмарках демонстрируют превосходство Repair-R1. В частности, по сравнению с базовыми моделями, Repair-R1 повышает успешность исправлений на 2,68\% до 48,29\%, успешность генерации тестов на 16,38\% до 53,28\% и покрытие тестами на 0,78\% до 53,96\%. Мы публикуем код и веса по адресам https://github.com/Tomsawyerhu/APR-RL и 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