← Nieuwste papers
💻 computer science

Beyond Strict Rules: Assessing the Effectiveness of Large Language Models for Code Smell Detection

Dit artikel evalueert de effectiviteit van vier grote taalmodellen bij het detecteren van negen code smells in 30 Java-projecten, waarbij wordt onthuld dat hoewel ze uitblinken in het identificeren van structureel eenvoudige smells, een hybride strategie die LLM's combineert met statische analyse-instrumenten een superieure prestatie biedt voor de meeste smells, hoewel de optimale aanpak uiteindelijk afhangt van de vraag of precisie of recall prioriteit krijgt.

Oorspronkelijke auteurs: Saymon Souza, Amanda Santana, Eduardo Figueiredo, Igor Muzetti, João Eduardo Montandon, Lionel Briand

Gepubliceerd 2026-06-01
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Saymon Souza, Amanda Santana, Eduardo Figueiredo, Igor Muzetti, João Eduardo Montandon, Lionel Briand

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

De Grote Visie: Het Opsporen van "Slechte Gewoontes" in Code

Stel je een enorme bibliotheek voor vol boeken (softwarecode). Na verloop van tijd worden sommige boeken slordig. Ze hebben misschien hoofdstukken die te lang zijn, pagina's die hetzelfde verhaal herhalen, of personages die te veel leunen op anderen om hun werk te doen. In software engineering worden deze slordige patronen Code Smells genoemd. Het zijn geen bugs die het programma laten crashen, maar het zijn meer "slechte gewoontes" die het coderen later moeilijk maken om te repareren, bij te werken of te begrijpen.

Jarenlang hebben we Static Analysis Tools gebruikt (laten we ze "De Regelboeken" noemen) om deze geuren te vinden. De Regelboeken zijn strikt; ze volgen een checklist. Als een methode meer dan 50 regels heeft, zegt het Regelboek: "Dat is een Lange Methode!" Het is snel, maar kan een beetje dom zijn. Het kan een volkomen goede lange methode markeren, simpelweg omdat hij lang is, of een slordige korte methode missen die er onschuldig uitziet.

Onlangs zijn Large Language Models (LLMs) (laten we ze "De Slimme Stagiairs" noemen) beroemd geworden. Dit zijn AI-systemen die code kunnen lezen en begrijpen alsof ze een mens zijn. De grote vraag die dit onderzoek stelt is: Kunnen deze Slimme Stagiairs slechte gewoontes beter vinden dan de strikte Regelboeken?

Het Experiment: Een Proeverij met 30 Bibliotheken

Om dit uit te zoeken, zetten de onderzoekers een enorme proeverij op.

  1. Het Menu: Ze kozen 30 populaire Java-softwareprojecten (zoals het kiezen van 30 verschillende soorten restaurants).
  2. De Gerechten: Ze zochten naar 9 specifieke soorten slechte gewoonten (Code Smells), zoals:
    • Long Method (Lange Methode): Een functie die te veel probeert te doen.
    • Large Class (Grote Klasse): Een bestand dat te veel verantwoordelijkheden draagt.
    • Feature Envy (Kenmerk-afgunst): Een functie die meer tijd besteedt aan de data van iemand anders dan aan die van zichzelf.
  3. De Jury: Ze lieten de AI niet zomaar gokken. Ze vroegen 76 menselijke ontwikkelaars (studenten met een goede opleiding) om handmatig 268 codestukken te inspecteren en te beslissen: "Is dit echt een slechte gewoonte, of is het prima?" Dit creëerde de "Ground Truth" (de officiële antwoordenlijst).
  4. De Deelnemers: Ze lieten 4 verschillende Slimme Stagiairs (DeepSeek-R1, GPT-5 mini, Llama-3.3 en Qwen2.5-Code) strijden tegen de Regelboeken (traditionele tools zoals JDeodorant en PMD).

De Resultaten: Wie Won Er?

De resultaten waren een mix van "De Stagiairs zijn geweldig" en "De Regelboeken hebben nog steeds hun plek".

1. De Makkelijke Dingen: De Stagiairs Schitteren

Voor geuren die makkelijk te tellen of te meten zijn, waren de Slimme Stagiairs fantastisch.

  • Analogie: Als de slechte gewoonte is "Dit boek is 500 pagina's lang", kunnen de Stagiairs de pagina's net zo goed tellen als het Regelboek, maar ze begrijpen de context beter.
  • De Winnaars: Voor geuren zoals Long Method en Large Class presteerden de AI-modellen zeer sterk, en evenaarden of versloegen ze vaak de strikte tools.

2. De Lastige Dingen: Het Hangt ervan Af welke Stagiair

Voor geuren waarbij begrip nodig is voor waarom code op een bepaalde manier is geschreven, waren de resultaten gemengd.

  • Analogie: Stel je een personage in een verhaal voor dat te veel met een buurman praat. Is dat "Feature Envy" (slecht) of gewoon goed teamwork? Het Regelboek zou het misschien volledig missen. De ene Slimme Stagiair zegt misschien: "Ja, dat is slecht!" terwijl een andere zegt: "Nee, dat is prima."
  • De Bevinding: Verschillende AI-modellen waren goed in verschillende dingen. Zo was één model erg goed in het opsporen van "Feature Envy", terwijl een ander beter was in "Intensive Coupling". Er was geen enkele "Super AI" die overal perfect in was.

3. De Moeilijkste Dingen: Beiden Hebben Moeite

Voor de meest subjectieve geuren, zoals Refused Bequest (een kindklasse die de regels van de ouder negeert) of Shotgun Surgery (een kleine wijziging die overal dingen breekt), hadden zowel de Regelboeken als de Slimme Stagiairs moeite.

  • Analogie: Dit zijn subtiele sociale ongemakkelijkheden in een groepschat. Het is moeilijk te definiëren wanneer het precies een probleem wordt. Zowel de slimste AI als het strengste regelboek hadden moeite om het hierover eens te worden.

Het Geheime Wapen: De "Stemcommissie"

De onderzoekers probeerden een slimme truc. In plaats van slechts één AI of slechts één Regelboek te vragen, vroegen ze iedereen (alle 4 de AI's + 2 Regelboeken) om over elk stuk code te stemmen. Als ten minste 3 van de 6 zeiden: "Dit is een geur," telden ze het als een geur.

  • Het Resultaat: Deze "Commissie"-aanpak was het beste in het vinden van alles (hoge Recall). Het ving bijna alle slechte gewoonten op, zelfs de lastige.
  • De Keerzijde: Omdat het zo enthousiast was in het vinden van slechte gewoonten, markeerde het ook sommige schone code als "stinkend" (False Positives).
  • De Les: Als je wilt zorgen dat je geen enkele problemen mist, gebruik dan de Commissie. Als je wilt voorkomen dat je je team lastigvalt met valse alarmen, kies dan de specifieke expert voor die specifieke taak.

De Kern van het Verhaal

  • Voor eenvoudige, structurele problemen (zoals code die te lang of te groot is), is AI een krachtig hulpmiddel dat net zo goed of zelfs beter werkt dan traditionele tools.
  • Voor complexe, context-gevoelige problemen, zijn gespecialiseerde tools of specifieke AI-modellen nog steeds beter dan een algemene "one-size-fits-all" aanpak.
  • De Beste Strategie: Het hangt ervan af wat je belangrijk vindt.
    • Als je veiligheid wilt (elke mogelijke kwestie vinden), combineer dan de AI en de tools (De Commissie).
    • Als je precisie wilt (valse alarmen vermijden), kies dan de specifieke tool of het AI-model dat het beste is voor dat specifieke type geur.

Kortom: De Slimme Stagiairs zijn klaar om te helpen, maar ze werken het best als je weet welke Stagiair je voor welke klus moet vragen, of als je ze samen laatwerken met de ouderwetse Regelboeken.

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 →