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.
- 논문 ID: 2510.12487
- 제목: Diff-XYZ: A Benchmark for Evaluating Diff Understanding
- 저자: Evgeniy Glukhov, Michele Conti, Egor Bogomolov, Yaroslav Golubev, Alexander Bezzubov (JetBrains Research)
- 분류: cs.SE (소프트웨어 공학), cs.LG (기계학습)
- 발표 학회: 39th Conference on Neural Information Processing Systems (NeurIPS 2025) Workshop: Deep Learning for Code in the Agentic Era
- 논문 링크: https://arxiv.org/abs/2510.12487
본 논문은 대규모 언어 모델의 코드 차이(diff) 이해도를 평가하기 위한 Diff-XYZ 벤치마크를 제안합니다. 이 벤치마크는 세 가지 지도학습 작업으로 구성됩니다: apply(구 코드+diff→신 코드), anti-apply(신 코드-diff→구 코드), diff 생성(신 코드-구 코드→diff). 벤치마크 데이터는 CommitPackFT의 실제 커밋에서 수집되었으며, 1000개의 삼중쌍 인스턴스 ⟨구 코드, 신 코드, diff⟩를 포함합니다. 연구 결과에 따르면 서로 다른 diff 형식은 사용 사례와 모델 크기에 따라 선택되어야 하며, 이는 향후 코드 편집 모델 개발을 위한 중요한 기초를 제공합니다.
현대 코드 편집 에이전트는 대규모 저장소 편집 및 리팩토링에서 코드 차이를 안정적으로 처리해야 하지만, 기존 평가 방법에는 다음과 같은 문제가 있습니다:
- 형식 선택 연구 부족: 다양한 diff 표현 형식(unified diff, search-replace 등)이 존재하지만, 체계적인 형식 비교 연구가 부족합니다
- 평가 복잡성: 기존 엔드-투-엔드 벤치마크(예: SWE-bench)는 여러 요소(검색, 도구 사용 등)를 혼합하여 diff 형식의 영향을 분리하기 어렵습니다
- 다양한 실패 패턴: 패치는 구문 오류, 컨텍스트 불일치 또는 논리 오류로 인해 실패할 수 있으며, 더 세밀한 분석이 필요합니다
- 실용적 가치: 코드 diff 처리는 자동화된 코드 편집, 버그 수정, CI 빌드 수정 등의 작업의 핵심 능력입니다
- 이론적 의미: LLM이 구조화된 편집 정보를 어떻게 처리하는지 이해하는 것은 코드 생성 모델 개선에 중요합니다
- 공학적 가치: 적절한 diff 형식 선택을 위한 데이터 기반 지침을 제공합니다
- Diff-XYZ 벤치마크 제안: 세 가지 상호 보완적 작업으로 구성된 경량의 재현 가능한 평가 프레임워크
- 체계적 형식 비교: 여러 diff 표현 형식에 대한 최초의 제어 변수 체계적 비교
- 성능 기준선 수립: 독점 모델과 오픈소스 모델의 diff 이해도 작업에 대한 상세한 성능 기준선 구축
- 형식 선택 지침: 모델 크기, 작업 유형과 최적 형식 선택 간의 관계 발견
- 개방형 데이터셋: HuggingFace Hub에서 고품질 평가 데이터셋 공개
방정식 diff = 신 코드 - 구 코드를 기반으로 세 가지 작업을 정의합니다:
X. Apply 작업(적용 작업)
- 입력: 구 코드 + diff
- 출력: 신 코드
- 목표: 형식 준수 및 문자 수준 충실도 테스트
Y. Anti-Apply 작업(역방향 적용 작업)
- 입력: 신 코드 + diff
- 출력: 구 코드
- 목표: 형식의 가역성 및 무손실성 탐지
Z. Diff 생성 작업(차이 생성 작업)
- 입력: 구 코드 + 신 코드
- 출력: 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 생성 작업:
- Parsing Rate: 파싱 가능한 diff의 비율
- Applying Rate: 성공적으로 적용 가능한 diff의 비율
- EM/IoU after application: diff 적용 후 정확 일치율 및 IoU
- F1+ / F1-: 추가 라인 및 삭제 라인의 F1 점수
- 작업 설계의 상호 보완성: 세 가지 작업이 다양한 각도에서 diff 이해도를 종합적으로 평가합니다
- 제어 변수 실험: 컨텍스트 변경을 고정하고 형식을 변경하여 형식 영향을 정확히 측정합니다
- 실제 데이터 기반: 합성 데이터가 아닌 실제 커밋을 기반으로 하여 생태계 유효성을 보장합니다
- 다차원 평가: 구문 정확성, 적용 성공률 및 의미론적 정확성을 결합합니다
- udiff: 표준 unified diff 형식
- udiff-h: 완화된 블록 헤더의 unified diff
- udiff-l: 명시적 태그(ADD/DEL/CON)를 사용하는 unified diff
- 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는 Apply/Anti-Apply에서 GPT-4o 수준에 근접합니다
- 하지만 Diff 생성에서는 여전히 현저한 차이가 있습니다
주요 발견:
- 작업 의존성:
- Apply/Anti-Apply: udiff 형식이 최고 성능
- Diff 생성: search-replace가 대형 모델에 더 유리합니다
- 모델 규모 효과:
- 대형 모델: search-replace가 생성 작업에서 우수합니다
- 소형 모델: udiff-l(명시적 태그)이 최고 성능입니다
- 형식 특성 분석:
- search-replace 장점: 전역 제약을 피하고 로컬 편집이 독립적입니다
- udiff-h 단점: 라인 번호 스캐폴딩 제거로 인한 구조 혼란
- udiff-l 장점: 명시적 태그가 태그 충돌을 줄입니다
프롬프트 영향:
- Diff 생성 작업은 형식 설명에 매우 민감합니다
- GPT-4.1은 형식 설명 없이 V4A 형식을 출력하는 경향이 있습니다
- Apply 작업은 프롬프트 변화에 상대적으로 견고합니다
언어 차이:
- 5가지 프로그래밍 언어에서 상대적으로 일관된 성능
- Python과 JavaScript에서 다른 언어보다 약간 우수합니다
- HumanEval/MBPP: 함수 수준 코드 생성
- BigCodeBench: 복잡한 라이브러리 호출 작업
- 한계: 주로 처음부터의 생성에 초점을 맞추고 편집 표현을 다루지 않습니다
- SWE-bench: 실제 GitHub 문제 해결
- CodeEditorBench: 지시 따르기 편집
- 한계: 엔드-투-엔드 평가로 형식 영향을 분리하기 어렵습니다
- 상호 보완성: 편집 표현의 격리된 연구에 초점을 맞춥니다
- 경량화: 저장소 설정이나 실행 환경이 필요하지 않습니다
- 제어성: 작업 컨텍스트를 고정하고 표현 형식을 변경합니다
- 형식 선택의 중요성: 서로 다른 형식이 다양한 작업과 모델 규모에서 현저한 성능 차이를 보입니다
- 작업 특이성: 생성 및 적용 작업은 서로 다른 최적 형식이 필요합니다
- 규모 의존성: 소형 모델과 대형 모델의 최적 전략이 다릅니다
- 현실적 격차: 오픈소스 모델은 diff 생성에서 여전히 개선할 여지가 있습니다
- 단순화된 작업: 벤치마크 작업은 다운스트림 응용의 단순화된 대리입니다
- 평가 범위: 탐욕 디코딩만 고려하고 추론이나 도구 사용은 포함하지 않습니다
- 형식 범위: AST 수준 또는 구조화된 패치 형식을 포함하지 않습니다
- 다운스트림 연결: 벤치마크 성능과 실제 응용 효과 간의 정량적 연관성이 부족합니다
- 형식 확장: 트리 구조 및 AST 수준 편집 표현 탐색
- 다운스트림 연결: 벤치마크 성능과 실제 응용 효과 간의 연관성 구축
- 추론 능력: 다단계 추론 및 도구 사용 시나리오 평가
- 오류 복구: 부분적이거나 손상된 diff의 처리 능력 연구
- 명확한 문제 정의: diff 이해도라는 핵심이지만 간과된 능력을 정확히 파악합니다
- 엄격한 실험 설계: 제어 변수 형식 비교 방법이 과학적이고 신뢰할 수 있습니다
- 높은 데이터 품질: 실제 커밋을 기반으로 하며 계층화 샘플링이 대표성을 보장합니다
- 가치 있는 발견: 형식 선택 지침이 직접적인 실용적 가치를 가집니다
- 강한 재현성: 상세한 실험 설정과 개방형 데이터셋
- 제한된 이론적 깊이: 형식 차이의 메커니즘에 대한 이론적 분석이 충분하지 않습니다
- 단일 평가 차원: 주로 정확성에 초점을 맞추고 효율성과 가독성을 고려하지 않습니다
- 불완전한 모델 범위: 오픈소스 모델이 주로 Qwen 시리즈에 집중되어 있습니다
- 제한된 응용 시나리오: 대화형 편집 및 증분 업데이트 시나리오를 고려하지 않습니다
- 학술적 가치: 코드 편집 평가의 중요한 공백을 채우며 후속 연구를 촉발할 수 있습니다
- 공학적 가치: 산업계가 diff 형식을 선택할 때 데이터 지원을 제공합니다
- 커뮤니티 기여: 개방형 벤치마크와 데이터셋이 전체 연구 커뮤니티에 이익을 줍니다
- 표준화 가능성: 코드 편집 능력 평가의 표준 벤치마크가 될 수 있습니다
- 모델 개발: 코드 편집 모델의 능력 평가 및 개선
- 형식 설계: 새로운 diff 형식의 효과 검증
- 도구 선택: 코드 편집 도구의 형식 전략 선택
- 연구 기초: 복잡한 코드 편집 작업의 기초 능력 테스트
논문은 31개의 관련 문헌을 인용하며, 주요 내용은 다음과 같습니다:
- 코드 생성 벤치마크: HumanEval, MBPP, BigCodeBench 등
- 편집 평가: SWE-bench, CodeEditorBench 등
- 모델 기술 보고서: GPT-4o, Claude, Qwen2.5-Coder 등
- 도구 및 형식: Aider, GNU diffutils 등
종합 평가: 이는 코드 편집 분야의 중요한 문제를 정확히 파악하고 해결하는 고품질의 체계적 연구 논문입니다. 이론적 깊이에서는 부족하지만, 실용적 가치와 방법론적 기여가 현저하며, 코드 편집 기술 발전을 추진하는 데 중요한 의미가 있습니다.