2025-11-12T15:16:15.308508

Diff-XYZ: A Benchmark for Evaluating Diff Understanding

Glukhov, Conti, Bogomolov et al.
Reliable handling of code diffs is central to agents that edit and refactor repositories at scale. We introduce Diff-XYZ, a compact benchmark for code-diff understanding with three supervised tasks: apply (old code $+$ diff $\rightarrow$ new code), anti-apply (new code $-$ diff $\rightarrow$ old code), and diff generation (new code $-$ old code $\rightarrow$ diff). Instances in the benchmark are triples $\langle \textit{old code}, \textit{new code}, \textit{diff} \rangle$ drawn from real commits in CommitPackFT, paired with automatic metrics and a clear evaluation protocol. We use the benchmark to do a focused empirical study of the unified diff format and run a cross-format comparison of different diff representations. Our findings reveal that different formats should be used depending on the use case and model size. For example, representing diffs in search-replace format is good for larger models in the diff generation scenario, yet not suited well for diff analysis and smaller models. The Diff-XYZ benchmark is a reusable foundation for assessing and improving diff handling in LLMs that can aid future development of diff formats and models editing code. The dataset is published on HuggingFace Hub: https://huggingface.co/datasets/JetBrains-Research/diff-xyz.
academic

Diff-XYZ: Бенчмарк для оценки понимания различий в коде

Основная информация

  • ID статьи: 2510.12487
  • Название: Diff-XYZ: A Benchmark for Evaluating Diff Understanding
  • Авторы: Евгений Глухов, Микеле Конти, Егор Богомолов, Ярослав Голубев, Александр Беззубов (JetBrains Research)
  • Категория: cs.SE (Программная инженерия), cs.LG (Машинное обучение)
  • Конференция: 39-я конференция по нейронным системам обработки информации (NeurIPS 2025) Семинар: Deep Learning for Code in the Agentic Era
  • Ссылка на статью: https://arxiv.org/abs/2510.12487

Аннотация

В данной работе предложен бенчмарк Diff-XYZ для оценки способности больших языковых моделей понимать различия в коде (diff). Бенчмарк включает три задачи контролируемого обучения: apply (старый код + diff → новый код), anti-apply (новый код - diff → старый код) и генерация diff (новый код - старый код → diff). Данные бенчмарка получены из реальных коммитов в CommitPackFT и содержат 1000 экземпляров троек ⟨старый код, новый код, diff⟩. Исследование показало, что различные форматы diff следует выбирать в зависимости от сценария использования и размера модели, что обеспечивает важную основу для развития будущих моделей редактирования кода.

Контекст и мотивация исследования

Основные проблемы

Современные агенты редактирования кода требуют надежной обработки различий в коде при масштабном редактировании репозиториев и рефакторинге, однако существующие методы оценки имеют следующие недостатки:

  1. Отсутствие систематического исследования выбора формата: Хотя существуют различные форматы представления diff (unified diff, search-replace и др.), отсутствует систематическое сравнение форматов
  2. Сложность оценки: Существующие сквозные бенчмарки (такие как SWE-bench) объединяют множество факторов (поиск, использование инструментов и т.д.), что затрудняет изоляцию влияния формата diff
  3. Разнообразие режимов отказа: Патчи могут не применяться из-за синтаксических ошибок, несовпадения контекста или логических ошибок, требуя более детального анализа

Значимость исследования

  • Практическая ценность: Обработка diff кода является основной способностью для автоматизированного редактирования кода, исправления ошибок, исправления сборок CI и других задач
  • Теоретическое значение: Понимание того, как LLM обрабатывают структурированную информацию об редактировании, имеет важное значение для улучшения моделей генерации кода
  • Инженерная ценность: Предоставляет рекомендации, основанные на данных, для выбора подходящего формата diff

Основные вклады

  1. Предложение бенчмарка Diff-XYZ: Легкая, воспроизводимая структура оценки с тремя взаимодополняющими задачами
  2. Систематическое сравнение форматов: Первое контролируемое сравнение нескольких форматов представления diff
  3. Установление базовых показателей производительности: Подробные базовые показатели производительности для собственных и открытых моделей в задачах понимания diff
  4. Руководство по выбору формата: Выявлены связи между размером модели, типом задачи и оптимальным выбором формата
  5. Открытый набор данных: Высококачественный набор данных для оценки опубликован на HuggingFace Hub

Подробное описание методологии

Определение задач

На основе уравнения diff = новый код - старый код определены три задачи:

X. Задача Apply (Применение)

  • Входные данные: Старый код + diff
  • Выходные данные: Новый код
  • Цель: Тестирование соответствия формату и точности на уровне символов

Y. Задача Anti-Apply (Обратное применение)

  • Входные данные: Новый код + diff
  • Выходные данные: Старый код
  • Цель: Проверка обратимости формата и отсутствия потерь информации

Z. Задача Diff Generation (Генерация различий)

  • Входные данные: Старый код + новый код
  • Выходные данные: diff
  • Цель: Тестирование надежной способности синтеза diff

Построение набора данных

Источник данных: Реальные коммиты открытого исходного кода из набора данных CommitPackFT

Стратегия фильтрации:

  • Сохранены только коммиты с изменениями в одном файле
  • Исключены бинарные файлы, сгенерированный код, каталоги поставщиков
  • Ограничение по количеству строк в файле: 40-1000 строк
  • Исключены изменения только пробельных символов

Стратифицированная выборка:

  • Распределение по языкам: Python, JavaScript, Java, Kotlin, Rust по 200 образцов каждый
  • Сложность редактирования: Стратификация по количеству блоков изменений и размеру изменений
    • Малые редактирования: ≤7 строк изменений (40%)
    • Средние редактирования: 8-24 строк изменений (40%)
    • Большие редактирования: >24 строк изменений (20%)
  • Типы изменений: 81,5% содержат добавления и удаления, 16,3% только добавления, 2,2% только удаления

Метрики оценки

Задачи Apply и Anti-Apply:

  • Stripped Exact Match (EM): Точное совпадение после удаления пустых строк
  • Stripped Intersection over Union (IoU): Пересечение над объединением на уровне строк

Задача Diff Generation:

  • Parsing Rate: Доля анализируемых diff
  • Applying Rate: Доля успешно применяемых diff
  • EM/IoU после применения: Точное совпадение и IoU после применения diff
  • F1+ / F1-: F1-оценка для добавленных и удаленных строк

Технические инновации

  1. Взаимодополняющий дизайн задач: Три задачи всесторонне оценивают способность понимания diff с разных углов
  2. Контролируемые экспериментальные переменные: Точное измерение влияния формата путем фиксирования изменений контекста
  3. Данные из реальных источников: Основано на реальных коммитах, а не на синтетических данных, обеспечивая экологическую валидность
  4. Многомерная оценка: Объединяет синтаксическую корректность, успешность применения и семантическую корректность

Экспериментальная установка

Сравниваемые форматы

  1. udiff: Стандартный формат unified diff
  2. udiff-h: Unified diff с ослабленными заголовками блоков
  3. udiff-l: Unified diff с явными метками (ADD/DEL/CON)
  4. search-replace: Формат поиска и замены

Тестируемые модели

Собственные модели:

  • GPT-4o, GPT-4o-mini
  • GPT-4.1, GPT-4.1-mini, GPT-4.1-nano
  • Claude 4 Sonnet
  • Gemini 2.5 Flash

Открытые модели:

  • Серия Qwen2.5-Coder (0.5B-32B)

Стратегия подсказок

  • без формата: Общая подсказка помощника
  • с форматом: Системная подсказка с описанием формата

Результаты экспериментов

Основные результаты

Производительность собственных моделей:

  • Claude 4 Sonnet показывает лучший результат в задаче Apply (EM: 0.95-0.96)
  • GPT-4.1 демонстрирует сильную производительность во всех задачах, но чувствителен к подсказкам
  • Меньшие собственные модели (такие как GPT-4.1-nano) значительно снижают производительность на сложных задачах

Закономерности масштабирования открытых моделей:

  • Производительность явно улучшается с размером модели
  • Qwen2.5-Coder-32B приближается к уровню GPT-4o в задачах Apply/Anti-Apply
  • Однако остается значительный разрыв в задаче Diff Generation

Результаты сравнения форматов

Ключевые выводы:

  1. Зависимость от задачи:
    • Apply/Anti-Apply: Формат udiff показывает лучший результат
    • Diff Generation: search-replace более оптимален для больших моделей
  2. Эффект размера модели:
    • Большие модели: search-replace выделяется в задачах генерации
    • Малые модели: udiff-l (с явными метками) показывает лучший результат
  3. Анализ характеристик формата:
    • Преимущества search-replace: Избегает глобальных ограничений, локальные редактирования независимы
    • Недостатки udiff-h: Удаление номеров строк приводит к структурному беспорядку
    • Преимущества udiff-l: Явные метки снижают конфликты маркировки

Результаты абляционных экспериментов

Влияние подсказок:

  • Задача Diff Generation высокочувствительна к описанию формата
  • GPT-4.1 без описания формата склонен выводить формат V4A
  • Задача Apply относительно устойчива к изменениям подсказок

Различия между языками:

  • Производительность относительно согласована на пяти языках программирования
  • Немного лучше на Python и JavaScript

Связанные работы

Бенчмарки генерации кода

  • HumanEval/MBPP: Генерация кода на уровне функций
  • BigCodeBench: Задачи со сложными вызовами библиотек
  • Ограничения: Сосредоточены в основном на генерации с нуля, не затрагивают представления редактирования

Бенчмарки редактирования и решения проблем

  • SWE-bench: Решение реальных проблем GitHub
  • CodeEditorBench: Редактирование с соблюдением инструкций
  • Ограничения: Сквозная оценка затрудняет изоляцию влияния формата

Позиционирование данной работы

  • Дополнительность: Сосредоточена на изолированном исследовании представления редактирования
  • Легкость: Не требует настройки репозитория или среды выполнения
  • Контролируемость: Фиксирует контекст задачи, варьирует формат представления

Выводы и обсуждение

Основные выводы

  1. Выбор формата критически важен: Различные форматы показывают значительные различия в производительности в зависимости от задачи и размера модели
  2. Специфичность задачи: Задачи генерации и применения требуют различных оптимальных форматов
  3. Зависимость от размера: Оптимальные стратегии для малых и больших моделей различаются
  4. Практический разрыв: Открытые модели все еще имеют значительное пространство для улучшения в генерации diff

Ограничения

  1. Упрощение задач: Задачи бенчмарка являются упрощенным прокси для нижестоящих приложений
  2. Область оценки: Рассматривается только жадное декодирование, не затрагиваются рассуждения или использование инструментов
  3. Охват форматов: Не охватывает форматы на уровне AST или структурированные форматы патчей
  4. Связь с нижестоящими приложениями: Отсутствует количественная связь между производительностью бенчмарка и эффективностью реальных приложений

Направления будущих исследований

  1. Расширение форматов: Исследование представлений редактирования на уровне деревьев и AST
  2. Связь с нижестоящими приложениями: Установление связи между производительностью бенчмарка и эффектом реальных приложений
  3. Способность рассуждения: Оценка многошаговых рассуждений и сценариев использования инструментов
  4. Восстановление после ошибок: Исследование обработки частичных или поврежденных diff

Глубокая оценка

Преимущества

  1. Четкое определение проблемы: Точное выявление понимания diff как основной, но упускаемой из виду способности
  2. Строгий дизайн экспериментов: Научный и надежный метод сравнения форматов с контролем переменных
  3. Высокое качество данных: Основано на реальных коммитах, стратифицированная выборка обеспечивает репрезентативность
  4. Ценные выводы: Рекомендации по выбору формата имеют прямую практическую ценность
  5. Высокая воспроизводимость: Подробная экспериментальная установка и открытый набор данных

Недостатки

  1. Ограниченная теоретическая глубина: Теоретический анализ механизмов различий форматов недостаточно глубок
  2. Однозначные измерения оценки: Сосредоточена в основном на корректности, не учитывает эффективность и читаемость
  3. Неполное охватывание моделей: Открытые модели в основном сосредоточены на серии Qwen
  4. Ограниченные сценарии приложений: Не рассматриваются интерактивное редактирование и сценарии пошагового обновления

Влияние

  1. Академическая ценность: Заполняет важный пробел в оценке редактирования кода, может стимулировать последующие исследования
  2. Инженерная ценность: Предоставляет поддержку данных для выбора формата diff в промышленности
  3. Вклад в сообщество: Открытый бенчмарк и набор данных принесут пользу всему исследовательскому сообществу
  4. Потенциал стандартизации: Может стать стандартным бенчмарком для оценки способности редактирования кода

Применимые сценарии

  1. Разработка моделей: Оценка и улучшение способности моделей редактирования кода
  2. Проектирование форматов: Проверка эффективности новых форматов diff
  3. Выбор инструментов: Выбор стратегии формата для инструментов редактирования кода
  4. Основа исследования: Тестирование базовых способностей для сложных задач редактирования кода

Библиография

Статья цитирует 31 связанную работу, включая в основном:

  • Бенчмарки генерации кода: HumanEval, MBPP, BigCodeBench и др.
  • Оценка редактирования: SWE-bench, CodeEditorBench и др.
  • Технические отчеты моделей: GPT-4o, Claude, Qwen2.5-Coder и др.
  • Инструменты и форматы: Aider, GNU diffutils и др.

Общая оценка: Это высококачественная систематическая исследовательская работа, которая точно выявляет и решает важные проблемы в области редактирования кода. Хотя теоретическая глубина несколько ограничена, практическая ценность и вклад методологии значительны, что имеет важное значение для продвижения развития технологии редактирования кода.