From Benchmark Data To Applicable Program Repair: An Experience Report

2508.16071v1 cs.SE, cs.AI 2025-08-26
Авторы:

Mahinthan Chandramohan, Jovan Jancic, Yuntong Zhang, Padmanabhan Krishnan

Резюме на русском

## Контекст Область исследования — автоматизированное исправление программных ошибок (program repair). Существующие проблемы включают ограниченную эффективность существующих методов в решении реальных проблем, связанных с ошибками в программном обеспечении. Известно, что многие существующие методы программного ремонта опираются на тестовые данные, которые могут быть недостаточно устойчивыми для решения реальных проблем. Например, тесты, ориентированные на стандартных бенчмарках, могут не содержать достаточного числа edge cases и не учитывать специфику реальных систем. Мотивация заключается в разработке эффективных методов автоматизированного исправления кода, которые могут быть использованы в промышленных условиях, а не только для академических задач. ## Метод Методология основывается на сочетании нескольких техник из литературы, включая генерацию тестов и исправление кода с использованием LLMs (Large Language Models). Формальные спецификации, такие как JML (Java Modeling Language), используются для уточнения требований к коду и повышения качества тестов. Архитектура решения включает в себя компоненты для генерации тестовых сценариев, анализа кода и оценки качества исправлений. Особое внимание уделяется тестированию на edge cases и exception handling, так как эти аспекты часто отсутствуют в стандартных тестах. ## Результаты В ходе экспериментов были применены методы автоматизированного исправления на различных бенчмарках, включая стандартные наборы данных, такие как Defects4J. На этих наборах данных показано, что использование формальных спецификаций добавляет качеству тестов, особенно для логических и строковых ошибок. Тем не менее, на реальных ошибках, встречающихся в промышленных условиях, эффективность такого подхода оказалась ниже, чем на бенчмарках. Также было выявлено, что прохождение тестов не гарантирует корректность исправлений, что ограничивает эффективность этого подхода в реальной практике. ## Значимость Полученные результаты могут быть применимы в следующих областях: 1. Автоматизированное исправление ошибок в коде, особенно для сложной промышленной программы. 2. Повышение качества тестов, в том числе для edge cases и exception handling, что может существенно повысить надеждость программ. 3. Исследование и интеграция новых технологий, таких как contract automata и programming by example, для улучшения процесса исправления кода. Преимущества: повышение качества тестов и повышение уровня автоматизации в процессе исправления программных ошибок. Ограничения: недостаточное выражаемость JML-спецификаций и недостаточная гарантия корректности исправлений в реальных условиях. ## Выводы Статья показывает, что текущие под

Abstract

This paper describes our approach to automated program repair. We combine various techniques from the literature to achieve this. Our experiments show that our approach performs better than other techniques on standard benchmarks. However, on closer inspection, none of these techniques work on realistic defects that we see in industry. We find that augmenting code with formal specifications enables LLMs to generate higher-quality unit tests, especially for complex production code with improved coverage of edge cases and exception handling. However, specifications add little value for well-understood errors (e.g., null pointer, index out of bounds), but are beneficial for logic and string manipulation errors. Despite encouraging benchmark results, real-world adoption is limited since passing tests do not guarantee correct patches. Current challenges include insufficient expressiveness of the JML specification language, necessitating advanced verification tools and richer predicates. Our ongoing work is exploring contract automata, programming by example, and testcase repair, with a focus on integrating human feedback and measuring productivity gains - highlighting the gap between academic benchmarks and practical industry needs

Ссылки и действия