SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring
Dit artikel introduceert SWE-Refactor, een uitgebreide benchmark op repository-niveau bestaande uit 1.099 gevalideerde Java-refactorings die zijn ontworpen om de beperkingen van bestaande datasets te overwinnen en de capaciteiten van negen LLM's te evalueren, waarbij wordt onthuld dat huidige modellen aanzienlijk moeite hebben met complexe, samengestelde refactoring-taken.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je een enorme, oude bibliotheek voor vol boeken geschreven in een zeer specifieke taal (Java). De boeken werken perfect, maar de verhalen zijn rommelig: hoofdstukken zijn te lang, personages hebben verwarrende namen en sommige scènes zijn verspreid over verschillende kamers. Code refactoring is het proces van het opruimen van deze boeken om ze makkelijker leesbaar en onderhoudbaar te maken, zonder de eigenlijke verhaallijn of de afloop te veranderen.
Al een tijdje leren we computers (specifiek Large Language Models of LLM's) hoe ze nieuwe verhalen vanaf nul kunnen schrijven. Maar het aanleren van hoe ze bestaande verhalen kunnen opruimen zonder het plot te breken, is veel moeilijker.
Dit paper introduceert SWE-Refactor, een nieuwe "examen"-methode die ontworpen is om te testen hoe goed deze AI-computers code kunnen opruimen. Hier is de uitsplitsing in eenvoudige termen:
1. Het Probleem: De Oude Examens Waren Gebrekkig
Voorheen probeerden onderzoekers AI te testen op het opruimen van code, maar die tests hadden drie grote problemen:
- Te Simpel: Ze vroegen de AI alleen om kleine, enkelvoudige aanpassingen (zoals het hernoemen van één variabele), waarbij complexe taken die vereisen dat hele hoofdstukken worden verplaatst, werden genegeerd.
- Ruis in de Data: Soms bevatte het "juiste antwoord" dat in de test werd gegeven niet alleen een opruiming, maar bevatte het ook het oplossen van bugs of het toevoegen van nieuwe functies. Dit verwarde de AI: "Ben ik hier om de kamer op te ruimen, of moet ik ook de muren schilderen?"
- Gebrek aan Context: Echte code is als een web; het veranderen van één regel heeft vaak invloed op tien andere. Oude tests gaven de AI niet genoeg van het "grote plaatje" (de hele bibliotheek) om de verbindingen te begrijpen.
2. De Oplossing: Een Echte Wereld "Gym" voor AI
De auteurs bouwden SWE-Refactor, een enorme, hoogwaardige trainingsgrond en examen.
- Echt Menselijk Werk: In plaats van nepvoorbeelden te verzinnen, keken ze naar 11 echte, populaire Java-softwareprojecten. Ze vonden 1.099 momenten waarop menselijke ontwikkelaars succesvol code hadden opgeruimd.
- Zuivere Opruiming: Ze gebruikten speciale tools om alle wijzigingen die niet alleen over opruimen gingen, eruit te filteren. Als een ontwikkelaar een bug oploste terwijl hij de code opruimde, werd dat voorbeeld weggegooid. Ze hielden alleen de "zuivere" opruimingen over.
- De Volledige Bibliotheek: Ze gaven de AI niet slechts één pagina; ze gaven het de hele boeken, de kaart van de bibliotheek en de lijst van wie wat leest, zodat de AI de context begrijpt.
- De "Gouden Standaard" Controle: Om te controleren of de AI niet heeft valsgespeeld, controleren ze drie dingen:
- Compileert de code nog steeds (houden de pagina's de boel bij elkaar)?
- Passen alle tests nog steeds (maakt het verhaal nog steeds zin)?
- Heeft de AI daadwerkelijk de specifieke opruimtaak uitgevoerd die gevraagd werd, of heeft het gewoon iets geschreven dat werkte?
3. De Examenresultaten: AI is Goed in Kleine Taken, Slecht in Grote Taken
De auteurs testten 9 verschillende AI-modellen (inclusief bekende modellen zoals GPT-4o en DeepSeek) op dit nieuwe examen.
- De Generalisten Winnen: De grote, algemene AI-modellen (zoals GPT-4o) deden het veel beter dan de kleinere, gespecialiseerde codemodellen. Het lijkt erop dat het begrijpen van het "grote plaatje" belangrijker is dan alleen het kennen van de syntaxis.
- Simpel versus Complex: De AI was redelijk goed in simpele, enkelvoudige opruimingen (zoals "Extract Method", wat vergelijkbaar is met het nemen van een paragraaf uit een lang hoofdstuk en er een nieuw, kort hoofdstuk van maken).
- De Samengestelde Uitdaging: De AI had aanzienlijk moeite met samengestelde (compound) refactorings. Dit zijn taken die meerdere stappen tegelijk vereisen, zoals "Neem deze paragraaf, verplaats hem naar een ander hoofdstuk en hernoem het personage."
- De Analogie: Stel je voor dat je een robot vraagt om een zware bank te verplaatsen. Dat kan hij. Maar als je vraagt om "de bank te verplaatsen, de muur erachter te schilderen en het tapijt te herschikken", vergeet hij vaak een stap of maakt hij de volgorde fout.
- De Statistiek: Zelfs een zeer geavanceerde AI-agent (OpenAI Codex) slaagde slechts ongeveer 39% van de tijd voor deze complexe, meerstaps-taken.
4. Hoe de AI te Helpen Succesvol te Worden
De auteurs testten ook of het geven van meer hulp zou werken:
- Retrieval (RAG): Het geven van voorbeelden van vergelijkbare opruimingen aan de AI hielp een beetje.
- Multi-Agent Workflow (De Team-aanpak): Dit was de winnaar. In plaats van één AI het werk te laten doen, zetten ze een "Developer AI" op om de code te schrijven en een "Reviewer AI" om kritiek te leveren en om wijzigingen te vragen. Deze "team"-aanpak loste de meeste problemen op, wat aantoont dat AI zijn eigen werk moet controleren om complexe taken aan te kunnen.
Samenvatting
SWE-Refactor is een nieuwe, strikte en realistische test voor AI-code refactoring. Het bewijst dat hoewel AI steeds beter wordt in kleine code-aanpassingen, het nog steeds worstelt met complexe, meerstaps renovaties die vereisen dat men begrijpt hoe verschillende onderdelen van een softwareproject met elkaar verbonden zijn. De auteurs hebben al hun gegevens en resultaten vrijgegeven zodat andere onderzoekers deze "gym" kunnen gebruiken om betere AI voor de toekomst te trainen.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.