MigrationBench: Repository-Level Code Migration Benchmark from Java 8
Dit artikel introduceert MigrationBench, een uitgebreid benchmark- en evaluatiekader op repository-niveau voor het migreren van Java 8-code naar moderne LTS-versies (17 en 21), en toont aan dat een agentic LLM-framework hoge slagingspercentages kan bereiken voor deze uitdagende taak.
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, gevuld met boeken geschreven in een specifieke, iets verouderde stijl van het Engels (laten we dat "Engels 8" noemen). De bibliotheek is enorm, met duizenden boeken, en elk van hen verkeert momenteel in perfecte staat.
Stel je nu voor dat het bibliotheekbestuur besluit het hele gebouw te upgraden naar een nieuwe, moderne standaard ("Engels 17"). Dit gaat niet alleen om het wijzigen van het lettertype; het gaat om het updaten van de grammaticaregels, de woordenschat en de manier waarop de boeken zijn georganiseerd, zodat ze werken met de beveiligingssystemen en liften van het nieuwe gebouw.
MigrationBench is een gigantische uitdaging die is ontwikkeld door onderzoekers bij AWS AI om te testen hoe goed Kunstmatige Intelligentie (specifiek, Large Language Models of LLM's) dit massieve renovatieproject aankan.
Hier is de uiteenzetting van hun werk met behulp van eenvoudige analogieën:
1. Het Probleem: Een Hele Stad Verplaatsen, Niet Alleen Een Huis
De meeste eerdere AI-tests waren als het vragen aan een robot om een enkele lekkende kraan te repareren of een enkele alinea te schrijven. Maar echte software is niet slechts één bestand; het is een hele stad van onderling verbonden gebouwen (een "repository").
- De Uitdaging: Het verplaatsen van "Engels 8" naar "Engels 17" vereist het gelijktijdig wijzigen van duizenden bestanden. Als je één verkeersbord verandert, kun je de verkeerslichten drie blokken verderop kapotmaken.
- Het Gat: Tot nu toe was er geen gestandaardiseerd "examen" om te zien of AI in staat was een hele stad van code te renoveren zonder het hele systeem te laten crashen.
2. De Oplossing: De "MigrationBench" Dataset
De onderzoekers bouwden een enorme testsuite genaamd MigrationBench.
- De Volledige Dataset: Ze verzamelden 5.102 echte, open-source Java-projecten van internet (zoals GitHub). Ze filterden ze om te waarborgen dat ze van hoge kwaliteit waren, over de juiste licenties beschikten en momenteel perfect werkten.
- De "Geselecteerde" Subset: Het testen van alle 5.000+ projecten duurt eeuwen. Dus selecteerden ze handmatig 300 van de meest complexe, lastige en interessante projecten. Denk hierbij aan de "eindexamen"-versie van de dataset, ontworpen om de AI echt op de proef te stellen.
3. De Spelregels (Evaluatie)
Hoe weet je of de renovatie succesvol was? De onderzoekers stelden twee niveaus van moeilijkheid in:
Niveau 1: Minimale Migratie (De "Het Werkt"-Test)
- Doel: De AI hoeft er alleen voor te zorgen dat de code compileert (wordt gebouwd) en dat alle bestaande tests slagen in de nieuwe versie.
- Analogie: Het gebouw is veilig, de lichten gaan aan en de liften werken. De boeken zijn leesbaar.
- Succespercentage: Met hun beste AI-configuratie bereikten ze hier een succespercentage van 71,67%.
Niveau 2: Maximale Migratie (De "Modernisering"-Test)
- Doel: De AI moet niet alleen zorgen dat het werkt, maar ook elk enkel hulpmiddel en elke bibliotheek in de code upgraden naar hun absolute nieuwste, veiligste versies.
- Analogie: Niet alleen is het gebouw veilig, maar de AI heeft ook alle oude leidingen vervangen door nieuwe koperen pijpen, de beveiligingscamera's bijgewerkt naar 4K en de nieuwste smart-home-functies geïnstalleerd. Dit is veel moeilijker omdat nieuwe hulpmiddelen vaak andere regels hebben.
- Succespercentage: Dit is veel zwaarder. De beste AI-configuratie bereikte een succespercentage van 53,33%.
4. De Werknemers: AI Agents
De onderzoekers vroegen de AI niet zomaar om "code te schrijven". Ze bouwden AI Agents—digitale werknemers uitgerust met hulpmiddelen.
- De Basiswerknemer: Een simpele AI die naar de code kijkt en probeert fouten te herstellen. Het had moeite met de "Maximale" upgrade.
- De Slimme Werknemer (Prompt Engineering): Ze gaven de basiswerknemer een betere set instructies, met name om alles te upgraden. Dit hielp enorm.
- De Onderzoekerswerknemer (RAG): Ze gaven de werknemer een "telefoonboek" (een kennisbank) van de nieuwste softwareversies, zodat het niet hoefde te raden. Dit verbeterde de resultaten verder.
- Het Hybride Team (De Winnaar): Dit was de slimste aanpak. Ze gebruikten een computerprogramma om automatisch de oude hulpmiddelen te vervangen door nieuwe (een snelle, robotachtige stap) en lieten de AI Agent vervolgens de rommelige delen oplossen waar de nieuwe hulpmiddelen niet perfect pasten.
- Resultaat: Dit team deed het net zo goed als de duurste AI-werknemer, maar gebruikte 11% minder rekenkracht.
5. De Resultaten
Het paper toont aan dat hoewel AI steeds beter wordt in het oplossen van kleine codeproblemen, het renoveren van een hele software-"stad" van een oude versie naar een nieuwe nog steeds een enorme uitdaging is.
- De Hybride aanpak (het combineren van geautomatiseerde hulpmiddelen met AI) bleek de meest efficiënte manier om dit te doen.
- De dataset en de code voor deze AI-agents zijn nu publiek, zodat andere onderzoekers kunnen proberen nog betere renovatieteams te bouwen.
Kortom: MigrationBench is een nieuwe, strenge sportschool voor AI om te oefenen met het verplaatsen van volledige softwarebibliotheken van oude naar nieuwe versies. Het toont aan dat hoewel AI bekwaam is, de meest complexe "renovaties" nog steeds een slimme mix van geautomatiseerde hulpmiddelen en menselijk lijkend redeneren vereisen om het werk goed te doen.
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.