Prefactory: Automated Discovery and Application of Library-Adoption Refactorings
Dit artikel introduceert Prefactory, een geautomatiseerd systeem dat uitvoerbare zoekheuristieken synthetiseert met behulp van LLM's om efficiënt library-adoptie-refactoringen in Python-code te detecteren en toe te passen, waarbij het aanzienlijk hogere detectie- en validatiepercentages behaalt dan bestaande baselines op een nieuwe benchmark van real-world projecten.
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 voor dat je een bibliothecaris bent die een enorme, chaotische bibliotheek moet organiseren waar elk boek door een andere auteur is geschreven met hun eigen unieke stijl. Sommige auteurs vinden het wiel opnieuw uit en schrijven lange, ingewikkelde instructies voor dingen die al een perfect, kant-en-klaar hulpmiddel in de achterkamer van de bibliotheek hebben. In de wereld van computerprogrammering wordt dit "refactoring" genoemd. Het is de kunst van het opruimen van rommelige, handgeschreven code en het vervangen ervan door zuivere, efficiënte aanroepen van bestaande, goed geteste bibliotheken. Denk erover na dat je beseft dat je een trui aan het handbreien bent, terwijl je er ook gewoon een perfecte kunt kopen in een winkel. Het probleem is dat het vinden van deze kansen lijkt op het zoeken naar een speld in een hooiberg, vooral wanneer de speld er helemaal niet uitziet als een speld. De handgeschreven code vermeldt zelfs niet de naam van de bibliotheek; het doet gewoon op een onhandige manier hetzelfde. Jarenlang hebben computers moeite gehad om deze verborgen kansen om code te upgraden te ontdekken omdat ze te rigide zijn, en het vragen aan een superintelligente AI om elk bestand in een project te lezen, is te duur en te traag.
Maak kennis met Prefactory, een nieuwe tool die ontworpen is om dit puzzelstukje op te lossen. In plaats van een superintelligente AI te vragen om de hele bibliotheek aan code telkens weer vanaf nul te lezen (wat lijkt op het inhuren van een detective om elk boek in de bibliotheek één voor één te lezen), leert Prefactory de AI om eerst een set aangepaste "metaaldetectoren" te bouwen. Deze detectoren zijn als gespecialiseerde metaaldetectoren die zijn afgestemd op het vinden van specifieke vormen en geluiden van begraven schatten. Zodra de AI deze detectoren heeft gebouwd, kunnen ze de hele codebase in een oogwenk scannen, waarbij de rommelige, handgeschreven code die overeenkomt met het patroon van een bibliotheekfunctie wordt gevonden. Wanneer een match wordt gevonden, grijpt de AI voor de laatste keer in om de vervanging uit te voeren en te controleren of de nieuwe code precies hetzelfde werkt als de oude.
De onderzoekers testten dit idee op een enorme collectie van 100 echte voorbeelden waarbij ontwikkelaars handgeschreven code al succesvol hadden vervangen door bibliotheekaanroepen. Ze ontdekten dat Prefactory ongelooflijk goed was in het opsporen van deze kansen. Het identificeerde succesvol de juiste bestanden in 75 van de 100 gevallen en wees de exacte functies aan die gerepareerd moesten worden in 56 gevallen. Ter vergelijking: de op één na beste methode, die vertrouwde op een standaard AI-agent die door de code las, vond alleen de juiste bestanden in 35 gevallen en de juiste functies in 32 gevallen. Nog beter nog: Prefactory slaagde erin om 40 volledig gevalideerde, werkende refactorings te produceren die alle veiligheidstests doorstonden.
Wat deze aanpak zo bijzonder maakt, is hoe het geld en tijd bespaart. Het scannen van een project met Prefactory duurt gemiddeld slechts 1,3 seconden en kost minder dan $0,05 per instantie om te vinden en te repareren. De standaard AI-agentmethode kost daarentegen ongeveer drie keer zoveel en duurt veel langer omdat de agent elke keer opnieuw door het hele project moet "nadenken". Het artikel suggereert dat door de kennis van de AI om te zetten in herbruikbare, uitvoerbare detectoren, we code-opruiming snel, goedkoop en betrouwbaar kunnen maken. De auteurs merken echter ook op dat het systeem nog niet perfect is; het heeft soms moeite met zeer grote, complexe bibliotheken waar de "handgeschreven" code er heel anders uitziet dan de standaardpatronen van de bibliotheek, en het kan geen code repareren die betrokken is bij complexe, bestanden over meerdere mappen beslepende architecturale wijzigingen. Maar voor het overgrote deel van de alledaagse taken voor het opruimen van code, lijkt deze nieuwe "detector-bouwende" aanpak een game-changer te zijn.
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.