← Nieuwste papers
💻 computer science

SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks

Dit artikel introduceert SmellBench, een nieuwe benchmark die is ontworpen om code-agenten te evalueren op refactoring-taken door real-world code smells te injecteren, wat onthult dat huidige top-presterende modellen moeite hebben met cross-file begrip en slechts matig succes behalen bij het elimineren van deze onderhoudbaarheidsproblemen.

Oorspronkelijke auteurs: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

Gepubliceerd 2026-06-05
📖 6 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

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

Het Grote Plaatje: Het "Rommelige Kamer"-probleem

Stel je voor dat je een zeer slimme robotassistent hebt (een Code Agent) die code kan schrijven, bugs kan oplossen en bestanden kan organiseren. Je vraagt de robot om een rommelige kamer op te ruimen (code refactoren).

De meeste tests voor deze robots vragen alleen: "Heb je de stoel verplaatst zodat je door de deur kunt lopen?" Als de robot de stoel verplaatst en je kunt erdoorheen lopen, zegt de test: "Geslaagd!"

Maar het artikel stelt dat dit niet genoeg is. De robot heeft misschien de stoel verplaatst, maar daarmee een lamp omvergestoten, een stapel kleren op de vloer laten liggen en het raam geblokkeerd. De kamer werkt (je kunt erdoorheen lopen), maar het is een ramp om er langdurig in te wonen. Dit is wat ontwikkelaars "Code Smells" noemen — slordige, rommelige of slecht georganiseerde code die vandaag werkt, maar morgen voor hoofdpijn zal zorgen.

SmellBench is een nieuwe test die ontworpen is om te zien of deze AI-robots de rommel daadwerkelijk kunnen opruimen zonder het erger te maken, in plaats van alleen maar te controleren of de deur nog open staat.


Hoe ze de test hebben gebouwd (De "Gecontroleerde Rommel"-fabriek)

De onderzoekers realiseerden zich dat het vinden van echte voorbeelden van rommelige code is alsof je een specifiek zandkorreltje op een strand probeert te vinden. Het is moeilijk, en de rommel is vaak vermengd met andere zaken (zoals nieuwe functies of bugfixes).

Daarom hebben ze een fabriek gebouwd om perfect gecontroleerde rommels te creëren:

  1. De Schone Kamer: Ze begonnen met 7 beroemde, schone, goed georganiseerde Python-projecten (zoals pandas of numpy). Denk aan deze als smetteloze, perfect georganiseerde bibliotheken.
  2. Het "Smell" Injecteren: In plaats van te wachten tot er natuurlijk een rommel ontstond, gebruikten ze een AI om opzettelijk de code te verpesten. Ze injecteerden 7 specifieke soorten "smells" (zoals een "God Class" die te veel dingen probe_ert te doen, of "Dead Code" die nooit wordt gebruikt).
  3. De Grondwaarheid (Ground Truth): Omdat zij de rommel hebben gecreëerd, weten ze precies hoe de schone versie eruitzag voordat ze het verpestten. Dit is hun "Antwoordmodel".

Het Resultaat: Een dataset van 294 specifieke "rommelige" scenario's, variërend van makkelijk tot zeer moeilijk, die 7 verschillende soorten code-lelijkheid dekken.


De 7 Soorten "Code Smells" (De Scenario's van de Rommelige Kamer)

Het artikel richt zich op 7 specifieke manieren waarop code rommelig wordt. Hier is hoe ze dat vertalen naar het dagelijks leven:

  1. Feature Envy: Een persoon (een functie) die constant spullen van de buren leent in plaats van de eigen spullen te gebruiken. Analogie: Je blijft de hamer van je buurman lenen omdat je zelf geen gereedschap hebt, ook al heb je een eigen gereedschapskist.
  2. God Classes: Eén enkele persoon die probeert alle banen in het bedrijf te doen (koken, boekhouden, beveiliging en HR). Analogie: Eén conciërge die probeert de loodgieter te zijn, wiskunde te doceren en brood te bakken tegelijkertijd.
  3. Data Clumps: Overal dezelfde groep items (sleutels, portemonnee, telefoon) met je mee dragen, zelfs als je er maar één nodig hebt. Analogie: Een hele gereedschapskist meeslepen alleen maar om een lamp te vervangen.
  4. Shotgun Surgery: Je wilt iets kleins veranderen (zoals de kleur van de muren), maar je moet 10 verschillende kamers bezoeken om het te doen. Analogie: Het veranderen van de prijs van een product vereist dat je de bon, de website, de factuur en het verzendlabel afzonderlijk bijwerkt.
  5. Dead Code: Meubels in een kamer waar niemand ooit op zit of ze gebruikt. Analogie: Een boekenkast vol boeken die je 10 jaar geleden hebt gelezen en die je nooit meer aanraakt.
  6. Interface Segregation: Een afstandsbediening met 50 knoppen, terwijl je er slechts 3 gebruikt. Analogie: Een menu in een restaurant dat je dwingt om een biefstuk, een salade en een dessert te bestellen, alleen maar om een glas water te krijgen.
  7. Deep Inlining: Een recept dat zegt: "Doe stap 1, wat betekent dat je stap 2 doet, wat betekent dat je stap 3 doet..." allemaal geschreven in één gigantische paragraaf. Analogie: Een kaart waarbij de instructies binnen de instructies zijn geschreven, waardoor het onmogelijk is om de weg te volgen.

Het Experiment: Kunnen de Robots Opruimen?

De onderzoekers gaven deze rommelige codefragmenten aan 2 populaire AI-agents (OpenHands en Qwen Code) die worden aangedreven door 6 verschillende "hersenen" (Large Language Models zoals Claude, GPT en DeepSeek).

De Regels:

  • De AI moest de rommel vinden.
  • De AI moest de rommel repareren.
  • De AI moest ervoor zorgen dat de code nog steeds werkte (de tests haalde).

De Resultaten (Het Schokkende Deel):
Zelfs de beste combinatie van AI (Qwen Code + Claude Sonnet 4.5) behaalde een score van slechts 50,34% bij het elimineren van de "smells".

  • De "Deur"-test (Functionele Correctheid): De robots waren erg goed in dit. De meeste van hen hielden de "deur open" (de code bleef draaien). Ze slaagden voor de basis-tests in 80-90% van de gevallen.
  • De "Schone Kamer"-test (Refactoring Kwaliteit): De robots faalden hier. Ze losten vaak het directe probleem op, maar lieten de kamer alsnog rommelig achter. Ze hadden moeite met het overzien van het grote plaatje, vooral wanneer de rommel betrekking had op meerdere bestanden (zoals de "Shotgun Surgery" smell).

Belangrijkste bevinding: De AI is goed in het laten werken van de code, maar is momenteel slecht in het maken van mooie en onderhoudbare code.


Waarom Dit Belangrijk Is

Het artikel concludeert dat we AI niet alleen kunnen vragen: "Draait de code?" We moeten ook vragen: "Is de code schoon?"

Ze introduceerden een nieuwe manier om de AI te beoordelen met behulp van een "Judge AI" die kijkt naar:

  1. Is het geslaagd voor de tests? (Gaat de deur open?)
  2. Is de juiste plek gevonden om te repareren? (Hebben ze in de juiste kamer gekeken?)
  3. Is de code daadwerkelijk beter? (Is de kamer netjes?)

De Kernboodschap: Huidige AI-agents zijn als enthousiaste stagiairs die wel meubels kunnen verschuiven, maar vaak een spoor van stof achterlaten. Ze worden beter, maar ze hebben nog een lange weg te gaan voordat ze erop vertrouwd kunnen worden om complexe softwaresystemen professioneel te "refactoren" (op te ruimen) op hun eigen.

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.

Probeer Digest →