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.
- Paper-ID: 2510.12487
- Titel: Diff-XYZ: A Benchmark for Evaluating Diff Understanding
- Autoren: Evgeniy Glukhov, Michele Conti, Egor Bogomolov, Yaroslav Golubev, Alexander Bezzubov (JetBrains Research)
- Klassifizierung: cs.SE (Softwaretechnik), cs.LG (Maschinelles Lernen)
- Konferenz: 39th Conference on Neural Information Processing Systems (NeurIPS 2025) Workshop: Deep Learning for Code in the Agentic Era
- Paper-Link: https://arxiv.org/abs/2510.12487
Dieses Paper präsentiert den Diff-XYZ-Benchmark zur Bewertung der Fähigkeit großer Sprachmodelle, Code-Differenzen (Diffs) zu verstehen. Der Benchmark umfasst drei überwachte Lernaufgaben: apply (alter Code + Diff → neuer Code), anti-apply (neuer Code - Diff → alter Code) und Diff-Generierung (neuer Code - alter Code → Diff). Die Benchmark-Daten stammen aus echten Commits in CommitPackFT und enthalten 1000 Tripel-Instanzen ⟨alter Code, neuer Code, Diff⟩. Die Forschung zeigt, dass verschiedene Diff-Formate je nach Anwendungsfall und Modellgröße gewählt werden sollten und bietet damit eine wichtige Grundlage für die Entwicklung zukünftiger Code-Bearbeitungsmodelle.
Moderne Code-Bearbeitungsagenten benötigen zuverlässige Verarbeitung von Code-Differenzen bei großflächigen Repository-Bearbeitungen und Refaktorierungen, aber bestehende Bewertungsmethoden weisen folgende Probleme auf:
- Mangelnde systematische Formatforschung: Obwohl mehrere Diff-Darstellungsformate existieren (unified diff, search-replace, etc.), fehlt eine systematische Vergleichsstudie der Formate
- Bewertungskomplexität: Bestehende End-to-End-Benchmarks (wie SWE-bench) vermischen mehrere Faktoren (Retrieval, Tool-Nutzung, etc.), was es schwierig macht, die Auswirkungen des Diff-Formats zu isolieren
- Vielfältige Fehlermuster: Patches können aufgrund von Syntaxfehlern, Kontextabweichungen oder logischen Fehlern fehlschlagen und erfordern eine feinkörnigere Analyse
- Praktischer Wert: Die Verarbeitung von Code-Diffs ist eine Kernfähigkeit für automatisierte Code-Bearbeitung, Bug-Fixes und CI-Build-Reparaturen
- Theoretische Bedeutung: Das Verständnis, wie LLMs strukturierte Bearbeitungsinformationen verarbeiten, ist wichtig für die Verbesserung von Code-Generierungsmodellen
- Ingenieurwert: Bietet datengestützte Anleitung zur Auswahl geeigneter Diff-Formate
- Einführung des Diff-XYZ-Benchmarks: Ein leichtgewichtiges, reproduzierbares Evaluierungsframework mit drei komplementären Aufgaben
- Systematischer Formatvergleich: Erstmalige kontrollierte Vergleichsstudie mehrerer Diff-Darstellungsformate
- Leistungs-Baselines: Detaillierte Leistungs-Baselines für proprietäre und Open-Source-Modelle bei Diff-Verständnisaufgaben
- Formatwahlrichtlinien: Entdeckung der Beziehungen zwischen Modellgröße, Aufgabentyp und optimaler Formatwahl
- Offener Datensatz: Veröffentlichung eines hochwertigen Evaluierungsdatensatzes auf HuggingFace Hub
Basierend auf der Gleichung Diff = neuer Code - alter Code werden drei Aufgaben definiert:
X. Apply-Aufgabe (Anwendungsaufgabe)
- Eingabe: Alter Code + Diff
- Ausgabe: Neuer Code
- Ziel: Prüfung der Formateinhaltung und zeichenweisen Genauigkeit
Y. Anti-Apply-Aufgabe (Rückwärts-Anwendungsaufgabe)
- Eingabe: Neuer Code + Diff
- Ausgabe: Alter Code
- Ziel: Untersuchung der Formatumkehrbarkeit und Verlustfreiheit
Z. Diff-Generierungsaufgabe (Differenzgenerierungsaufgabe)
- Eingabe: Alter Code + Neuer Code
- Ausgabe: Diff
- Ziel: Prüfung der zuverlässigen Diff-Synthese-Fähigkeit
Datenquelle: Echte Open-Source-Commits aus dem CommitPackFT-Datensatz
Filterungsstrategie:
- Nur Commits mit Änderungen in einer Datei
- Ausschluss von Binärdateien, generiertem Code und Vendor-Verzeichnissen
- Dateizeilenbeschränkung: 40-1000 Zeilen
- Ausschluss von reinen Whitespace-Änderungen
Geschichtete Stichprobenentnahme:
- Sprachverteilung: Python, JavaScript, Java, Kotlin, Rust je 200 Samples
- Bearbeitungskomplexität: Geschichtet nach Anzahl der Änderungsblöcke und Änderungsgröße
- Kleine Bearbeitungen: ≤7 Zeilen Änderung (40%)
- Mittlere Bearbeitungen: 8-24 Zeilen Änderung (40%)
- Große Bearbeitungen: >24 Zeilen Änderung (20%)
- Änderungstypen: 81,5% enthalten Hinzufügungen und Löschungen, 16,3% nur Hinzufügungen, 2,2% nur Löschungen
Apply- und Anti-Apply-Aufgaben:
- Stripped Exact Match (EM): Exakte Übereinstimmungsrate nach Entfernung von Leerzeilen
- Stripped Intersection over Union (IoU): Zeilenebenen-Schnittmenge über Vereinigung
Diff-Generierungsaufgabe:
- Parsing Rate: Anteil der analysierbaren Diffs
- Applying Rate: Anteil der erfolgreich anwendbaren Diffs
- EM/IoU nach Anwendung: Exakte Übereinstimmungsrate und IoU nach Diff-Anwendung
- F1+ / F1-: F1-Score für hinzugefügte und gelöschte Zeilen
- Komplementäres Aufgabendesign: Drei Aufgaben bewerten Diff-Verständnis umfassend aus verschiedenen Blickwinkeln
- Kontrollierte Variablenexperimente: Präzise Messung der Formatauswirkungen durch Fixierung von Kontextänderungsformaten
- Datengesteuert durch echte Daten: Basierend auf echten Commits statt synthetischen Daten für ökologische Validität
- Mehrdimensionale Bewertung: Kombination von syntaktischer Korrektheit, Anwendungserfolgsrate und semantischer Korrektheit
- udiff: Standard-Unified-Diff-Format
- udiff-h: Gelockerte Unified-Diff-Block-Header
- udiff-l: Unified-Diff mit expliziten Markierungen (ADD/DEL/CON)
- search-replace: Suchersetzungs-Format
Proprietäre Modelle:
- GPT-4o, GPT-4o-mini
- GPT-4.1, GPT-4.1-mini, GPT-4.1-nano
- Claude 4 Sonnet
- Gemini 2.5 Flash
Open-Source-Modelle:
- Qwen2.5-Coder-Serie (0,5B-32B)
- ohne Format: Generischer Assistent-Prompt
- mit Format: System-Prompt mit Formatbeschreibung
Leistung proprietärer Modelle:
- Claude 4 Sonnet zeigt beste Leistung bei Apply-Aufgabe (EM: 0,95-0,96)
- GPT-4.1 zeigt starke Leistung bei allen Aufgaben, ist aber prompt-empfindlich
- Kleinere proprietäre Modelle (wie GPT-4.1-nano) zeigen signifikante Leistungsabfälle bei komplexen Aufgaben
Open-Source-Modell-Skalierungsgesetze:
- Leistung verbessert sich deutlich mit Modellgröße
- Qwen2.5-Coder-32B nähert sich GPT-4o-Niveau bei Apply/Anti-Apply an
- Zeigt aber noch signifikante Lücke bei Diff-Generierung
Schlüsselfunde:
- Aufgabenabhängigkeit:
- Apply/Anti-Apply: udiff-Format zeigt beste Leistung
- Diff-Generierung: search-replace ist für große Modelle überlegen
- Modellgrößeneffekt:
- Große Modelle: search-replace zeigt hervorragende Leistung bei Generierungsaufgaben
- Kleine Modelle: udiff-l (explizite Markierungen) zeigt beste Ergebnisse
- Formatcharakteristika-Analyse:
- search-replace-Vorteile: Vermeidung globaler Einschränkungen, lokale Bearbeitungen sind unabhängig
- udiff-h-Nachteile: Entfernung von Zeilennummern-Gerüsten führt zu strukturellem Chaos
- udiff-l-Vorteile: Explizite Markierungen reduzieren Markierungskonflikte
Prompt-Auswirkungen:
- Diff-Generierungsaufgabe ist hochgradig empfindlich gegenüber Formatbeschreibung
- GPT-4.1 neigt ohne Formatbeschreibung dazu, V4A-Format auszugeben
- Apply-Aufgabe ist relativ robust gegenüber Prompt-Änderungen
Sprachenunterschiede:
- Relativ konsistente Leistung über fünf Programmiersprachen
- Leicht bessere Leistung bei Python und JavaScript
- HumanEval/MBPP: Funktionsebenen-Code-Generierung
- BigCodeBench: Komplexe Bibliotheks-Aufruf-Aufgaben
- Einschränkungen: Konzentrieren sich hauptsächlich auf Generierung von Grund auf, nicht auf Bearbeitungsdarstellungen
- SWE-bench: Echte GitHub-Problemlösung
- CodeEditorBench: Anweisungsfolge-Bearbeitung
- Einschränkungen: End-to-End-Bewertung erschwert die Isolierung von Formatauswirkungen
- Komplementarität: Konzentriert sich auf isolierte Untersuchung von Bearbeitungsdarstellungen
- Leichtgewichtigkeit: Keine Repository-Einrichtung oder Ausführungsumgebung erforderlich
- Kontrollierbarkeit: Fixierte Aufgabenkontexte, variierende Darstellungsformate
- Formatwahl ist entscheidend: Verschiedene Formate zeigen signifikante Leistungsunterschiede bei verschiedenen Aufgaben und Modellgrößen
- Aufgabenspezifität: Generierungs- und Anwendungsaufgaben erfordern unterschiedliche optimale Formate
- Größenabhängigkeit: Optimale Strategien unterscheiden sich zwischen kleinen und großen Modellen
- Realistische Lücke: Open-Source-Modelle haben noch großes Verbesserungspotenzial bei Diff-Generierung
- Vereinfachte Aufgaben: Benchmark-Aufgaben sind vereinfachte Stellvertreter für nachgelagerte Anwendungen
- Bewertungsumfang: Berücksichtigt nur Greedy-Dekodierung, nicht Reasoning oder Tool-Nutzung
- Formatabdeckung: Umfasst keine AST-Ebenen- oder strukturierten Patch-Formate
- Nachgelagerte Verbindung: Fehlende quantitative Verbindung zwischen Benchmark-Leistung und tatsächlicher Anwendungseffektivität
- Formatenerweiterung: Erkundung von Baumstrukturen und AST-Ebenen-Bearbeitungsdarstellungen
- Nachgelagerte Verbindung: Etablierung von Verbindungen zwischen Benchmark-Leistung und tatsächlichen Anwendungseffekten
- Reasoning-Fähigkeit: Bewertung von Multi-Step-Reasoning und Tool-Nutzungsszenarien
- Fehlerwiederherstellung: Untersuchung der Verarbeitung von teilweisen oder beschädigten Diffs
- Klare Problemdefinition: Präzise Identifikation dieser Kernfähigkeit des Diff-Verständnisses, die oft übersehen wird
- Strenge experimentelle Gestaltung: Wissenschaftlich zuverlässige Methode des kontrollierten Formatvergleichs
- Hohe Datenqualität: Basierend auf echten Commits mit geschichteter Stichprobenentnahme für Repräsentativität
- Wertvolle Erkenntnisse: Formatwahlrichtlinien haben direkten praktischen Wert
- Starke Reproduzierbarkeit: Detaillierte experimentelle Einrichtung und offener Datensatz
- Begrenzte theoretische Tiefe: Theoretische Analyse der Formatdifferenzmechanismen ist nicht ausreichend tiefgreifend
- Eindimensionale Bewertung: Konzentriert sich hauptsächlich auf Korrektheit, fehlt Effizienz- und Lesbarkeitsüberlegungen
- Unvollständige Modellabdeckung: Open-Source-Modelle konzentrieren sich hauptsächlich auf Qwen-Serie
- Begrenzte Anwendungsszenarien: Berücksichtigt keine interaktive Bearbeitung und inkrementelle Update-Szenarien
- Akademischer Wert: Füllt wichtige Lücke in der Code-Bearbeitungs-Evaluierung, könnte nachfolgende Forschung katalysieren
- Ingenieurwert: Bietet Datenstützung für industrielle Formatwahl bei Code-Bearbeitung
- Community-Beitrag: Offener Benchmark und Datensatz werden der gesamten Forschungsgemeinschaft zugute kommen
- Standardisierungspotenzial: Könnte zum Standard-Benchmark für Code-Bearbeitungs-Fähigkeitsbewertung werden
- Modellentwicklung: Fähigkeitsbewertung und Verbesserung von Code-Bearbeitungsmodellen
- Formatdesign: Effektivitätsvalidierung neuer Diff-Formate
- Tool-Auswahl: Formatstrategie-Auswahl für Code-Bearbeitungswerkzeuge
- Forschungsgrundlage: Grundlegende Fähigkeitstests für komplexe Code-Bearbeitungsaufgaben
Das Paper zitiert 31 verwandte Arbeiten, hauptsächlich einschließlich:
- Code-Generierungs-Benchmarks: HumanEval, MBPP, BigCodeBench, etc.
- Bearbeitungs-Evaluierung: SWE-bench, CodeEditorBench, etc.
- Modell-Technische Berichte: GPT-4o, Claude, Qwen2.5-Coder, etc.
- Werkzeuge und Formate: Aider, GNU diffutils, etc.
Gesamtbewertung: Dies ist ein hochqualitatives systematisches Forschungspapier, das ein wichtiges Problem im Code-Bearbeitungsbereich präzise identifiziert und löst. Obwohl es in theoretischer Tiefe etwas zu wünschen übrig lässt, sind sein praktischer Wert und seine methodologischen Beiträge erheblich und von großer Bedeutung für die Förderung der Entwicklung von Code-Bearbeitungstechnologien.