Beyond Strict Rules: Assessing the Effectiveness of Large Language Models for Code Smell Detection
Diese Arbeit bewertet die Effektivität von vier großen Sprachmodellen bei der Erkennung von neun Code Smells in 30 Java-Projekten und zeigt auf, dass sie zwar exzellent darin sind, strukturell einfache Smells zu identifizieren, eine Hybridstrategie, die LLMs mit statischen Analysewerkzeugen kombiniert, jedoch eine überlegene Leistung für die meisten Smells bietet, wobei der optimale Ansatz letztlich davon abhängt, ob Präzision oder Recall priorisiert wird.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Das große Ganze: „Schlechte Angewohnheiten“ im Code finden
Stellen Sie sich eine riesige Bibliothek voller Bücher (Softwarecode) vor. Im Laufe der Zeit werden einige Bücher unordentlich. Es könnten Kapitel sein, die zu lang sind, Seiten, die dieselbe Geschichte wiederholen, oder Charaktere, die sich zu sehr auf andere verlassen, um ihre Arbeit zu erledigen. In der Softwaretechnik nennt man diese unordentlichen Muster Code Smells (Code-Gerüche). Es sind keine Fehler (Bugs), die das Programm zum Absturz bringen, aber sie sind wie „schlechte Angewohnheiten“, die es später schwierig machen, den Code zu reparieren, zu aktualisieren oder zu verstehen.
Jahrelang haben wir Statische Analyse-Tools verwendet (nennen wir sie „Die Regelbücher“), um diese Gerüche zu finden. Die Regelbücher sind streng; sie folgen einer Checkliste. Wenn eine Methode mehr als 50 Zeilen hat, sagt das Regelbuch: „Das ist eine Lange Methode!“ Es ist schnell, kann aber ein wenig dumm sein. Es könnte eine völlig in Ordnung befindliche lange Methode markieren, nur weil sie lang ist, oder eine unordentliche kurze Methode übersehen, die harmlos aussieht.
Vor kurzem sind Large Language Models (LLMs) (nennen wir sie „Die intelligenten Praktikanten“) berühmt geworden. Dies sind KI-Systeme, die Code fast so lesen und verstehen können wie ein Mensch. Die große Frage, die dieses Paper stellt, lautet: Können diese intelligenten Praktikanten schlechte Angewohnheiten besser finden als die strengen Regelbücher?
Das Experiment: Ein Geschmackstest mit 30 Bibliotheken
Um dies herauszufinden, bauten die Forscher einen riesigen Geschmackstest auf.
- Das Menü: Sie wählten 30 beliebte Java-Softwareprojekte aus (wie die Wahl von 30 verschiedenen Arten von Restaurants).
- Die Menüpunkte: Sie suchten nach 9 spezifischen Arten von schlechten Angewohnheiten (Code Smells), wie zum Beispiel:
- Long Method (Lange Methode): Eine Funktion, die versucht, zu viel auf einmal zu erledigen.
- Large Class (Große Klasse): Eine Datei, die mit zu vielen Verantwortlichkeiten überladen ist.
- Feature Envy (Eifersucht auf Funktionen): Eine Funktion, die mehr Zeit damit verbringt, an den Daten eines anderen zu arbeiten, als an ihren eigenen.
- Die Richter: Sie ließen die KI nicht einfach nur raten. Sie baten 76 menschliche Entwickler (Studenten mit guter Ausbildung), 268 Code-Schnipsel manuell zu inspizieren und zu entscheiden: „Ist das wirklich eine schlechte Angewohnheit oder ist es in Ordnung?“ Dadurch entstand die „Ground Truth“ (die offizielle Antwortlösung).
- Die Kontrahenten: Sie stellten 4 verschiedene intelligente Praktikanten (DeepSeek-R1, GPT-5 mini, Llama-3.3 und Qwen2.5-Code) gegen die Regelbücher (traditionelle Tools wie JDeodorant und PMD).
Die Ergebnisse: Wer hat gewonnen?
Die Ergebnisse waren eine Mischung aus „Die Praktikanten sind fantastisch“ und „Die Regelbücher haben immer noch ihren Platz“.
1. Die einfachen Dinge: Die Praktikanten glänzen
Für Gerüche, die leicht zu zählen oder zu messen sind, waren die intelligenten Praktikanten großartig.
- Analogie: Wenn die schlechte Angewohnheit ist: „Dieses Buch ist 500 Seiten lang“, können die Praktikanten die Seiten genauso gut zählen wie das Regelbuch, aber sie verstehen den Kontext besser.
- Die Gewinner: Bei Gerüchen wie Long Method und Large Class schnitten die KI-Modelle sehr stark ab und erreichten oft das Niveau oder übertrafen die strengen Tools.
2. Die kniffligen Dinge: Es kommt auf den Praktikanten an
Für Gerüche, bei denen man verstehen muss, warum Code auf eine bestimmte Weise geschrieben wurde, waren die Ergebnisse gemischt.
- Analogie: Stellen Sie sich einen Charakter in einer Geschichte vor, der zu viel mit einem Nachbarn redet. Ist das „Feature Envy“ (schlecht) oder einfach gute Teamarbeit? Das Regelbuch würde es vielleicht gar nicht bemerken. Ein intelligenter Praktant sagt vielleicht: „Ja, das ist schlecht!“, während ein anderer sagt: „Nein, das ist in Ordnung.“
- Die Erkenntnis: Verschiedene KI-Modelle waren gut in unterschiedlichen Dingen. Zum Beispiel war ein Modell sehr gut darin, „Feature Envy“ zu erkennen, während ein anderes besser bei „Intensive Coupling“ war. Es gab keinen einzelnen „Super-KI“, der an allem perfekt war.
3. Die schwierigsten Dinge: Beide kämpfen
Für die subjektivsten Gerüche, wie Refused Bequest (eine Kind-Klasse, die die Regeln ihrer Eltern ignoriert) oder Shotgun Surgery (eine winzige Änderung, die überall Dinge kaputt macht), hatten sowohl die Regelbücher als auch die intelligenten Praktikanten Schwierigkeiten.
- Analogie: Dies sind wie subtile soziale Unbeholfenheiten in einem Gruppenchat. Es ist schwer zu definieren, wann genau es zum Problem wird. Selbst die klügste KI und das strengste Regelbuch hatten Schwierigkeiten, sich hier einig zu werden.
Die Geheimwaffe: Der „Ausschuss“
Die Forscher probierten einen cleveren Trick aus. Anstatt nur eine KI oder nur ein Regelbuch zu fragen, baten sie alle (alle 4 KIs + 2 Regelbücher), über jedes Stück Code abzustimmen. Wenn mindestens 3 von 6 sagten: „Dies ist ein Smell“, zählten sie es als einen Smell.
- Das Ergebnis: Dieser „Ausschuss“-Ansatz war am besten darin, alles zu finden (hohe Recall/Trefferquote). Er erfasste fast alle schlechten Angewohnheiten, selbst die kniffligen.
- Der Haken: Da er so darauf bedacht war, schlechte Angewohnheiten zu finden, markierte er auch einige saubere Codes als „geruchig“ (False Positives/Fehlalarme).
- Die Lektion: Wenn Sie sicherstellen wollen, dass Sie keine Probleme übersehen, nutzen Sie den Ausschuss. Wenn Sie vermeiden wollen, Ihr Team mit Fehlalarmen zu belästigen, wählen Sie den spezifischen besten Experten für diese spezielle Aufgabe.
Das Fazit
- Für einfache, strukturelle Probleme (wie Code, der zu lang oder zu groß ist), ist KI ein mächtiges Werkzeug, das genauso gut oder sogar besser arbeitet als traditionelle Tools.
- Für komplexe, kontextabhängige Probleme sind spezialisierte Tools oder spezifische KI-Modelle immer noch besser als ein allgemeiner „Einheitsansatz“.
- Die beste Strategie: Es kommt darauf an, was Sie wertschätzen.
- Wenn Sie Sicherheit wollen (jedes mögliche Problem zu finden), kombinieren Sie die KI und die Tools (den Ausschuss).
- Wenn Sie Präzision wollen (Fehlalarme zu vermeiden), wählen Sie das spezifische Tool oder die KI, die am besten für diese spezifische Art von Smell geeignet ist.
Kurz gesagt: Die intelligenten Praktikanten sind bereit zu helfen, aber sie arbeiten am besten, wenn man weiß, welchen Praktikanten man für welche Aufgabe fragt, oder wenn man sie zusammen mit den altmodischen Regelbüchern arbeiten lässt.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.