← Neueste Arbeiten
💻 Informatik

An LLM-based Technique for Detection of Code Clones Across Open Source Microservice Repository Forks

Diese Studie zeigt, dass eine RAG-basierte Pipeline unter Verwendung des Codestral-22B LLM mit Few-Shot Continuous Prompting effektiv semantische Code-Klone und Wiederverwendungsmuster in Open-Source-Microservice-Forks identifiziert und dabei herkömmliche syntaktische Werkzeuge trotz aktueller Einschränkungen beim Recall übertrifft.

Ursprüngliche Autoren: Jamie Kemman, Shreya Nakum, Alexander Bakhtin, Matteo Esposito, Tomas Cerny, Valentina Lenarduzzi, Davide Taibi

Veröffentlicht 2026-10-21
📖 5 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Jamie Kemman, Shreya Nakum, Alexander Bakhtin, Matteo Esposito, Tomas Cerny, Valentina Lenarduzzi, Davide Taibi

Originalarbeit lizenziert unter CC BY 4.0 (https://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

In der weiten, kollaborativen Welt der Softwareentwicklung bauen Programmierer oft neue Anwendungen, indem sie bestehenden Code nehmen und ihn für einen anderen Zweck anpassen. Diese Praxis, bekannt als Forking, ist der Motor der Open-Source-Innovation, da sie Teams ermöglicht, auf den Schultern von Riesen zu stehen, anstatt bei Null anzufangen. Doch während diese Projekte wachsen und sich verzweigen, entsteht eine verborgene Komplexität: Der Code in ihnen kann zu einem verwirrten Netz aus Duplikaten werden. Einige Kopien sind exakte, zeilenweise identische Repliken, während andere clever umgeschriebene Versionen sind, die dasselbe tun, aber an der Oberfläche völlig anders aussehen. Diese sind als Code-Klone bekannt. Für die Maintainer großer Softwaresysteme, insbesondere solcher, die als Sammlung kleiner, unabhängiger Dienste aufgebaut sind, ist das Aufspüren dieser Duplikate eine monumentale Aufgabe. Traditionelle Werkzeuge sind exzellent darin, exakte Kopien aufzusporen, aber sie scheitern oft daran zu erkennen, wenn zwei Codeabschnitte so refaktoriert wurden, dass sie dieselbe Funktion auf völlig unterschiedliche Weise erfüllen. Zu verstehen, wo und wie diese Duplikate existieren, ist entscheidend, da es offenbart, wie sich Software entwickelt, wo Risiken der Inkonsistenz liegen und wie viel Aufwand tatsächlich erforderlich ist, um ein System reibungslos am Laufen zu halten.

Ein Forscherteam setzte sich vor kurzem zum Ziel, dieses Problem zu lösen, indem es ein neues Arten von digitalem Werkzeug testete: Large Language Models (große Sprachmodelle). Dies sind dieselben leistungsstarken KI-Systeme, die Geschichten schreiben oder Fragen beantworten können, aber hier wurden sie darauf trainiert, die Logik von Computercode zu verstehen. Die Forscher wollten sehen, ob diese Modelle als ein hochentwickeltes Mikroskop fungieren könnten, das nicht nur identischen Code, sondern auch semantisch ähnlichen Code erkennt, den traditionelle Werkzeuge übersehen. Sie konzentrierten ihre Untersuchung auf Open-Source-Microservice-Projekte, welche moderne Softwaresysteme sind, die aus vielen kleinen, austauschbaren Teilen aufgebaut werden. Um zu beginnen, mussten sie diese Modelle lehren, die verschiedenen Arten von Code-Klonen zu erkennen. Sie sammelten einen massiven Datensatz von zehntausend Paaren von C++-Code-Snippets, von denen die Hälfte als funktional identisch, aber syntaktisch unterschiedlich bekannt war, und die andere Hälfte unzusammenhängend war. Sie testeten drei verschiedene KI-Modelle, die von einem Allzwecksystem bis hin zu zwei spezialisierten Modellen reichten, die speziell für Programmieraufgaben entwickelt wurden. Sie experimentierten auch mit verschiedenen Wegen, die Modelle anzuweisen, die Aufgabe auszuführen, und probierten alles von einfachen Anweisungen bis hin zu komplexen Prompts, die Beispiele lieferten und nach Konfidenzwerten fragten.

Die Ergebnisse dieses ersten Testings waren aufschlussreich. Die Forscher fanden heraus, dass die spezialisierten Coding-Modelle weitaus überlegen gegenüber dem Allzweckmodell waren. Unter ihnen erwies sich ein Modell namens Codestral als das genaueste, das die höchste Gesamtgenauigkeit von 65,5 % erreichte und sowohl das andere spezialisierte Modell als auch das Allzwecksystem übertraf. Die Studie deckte jedoch auch eine signifikante Einschränkung auf: Selbst das beste Modell machte Fehler. Es übersah häufig die sehr Duplikate, die es eigentlich finden sollte, und erkannte sie in etwa vierzig Prozent der Fälle nicht. Es war gut darin, Code zu identifizieren, der definitiv unterschiedlich war, aber es war zu vorsichtig, wenn es darum ging, subtile Ähnlichkeiten aufzuspüren. Diese hohe Rate an verpassten Detektionen bedeutete, dass diese leistungsstarken Werkzeuge vorerst noch nicht zuverlässig genug sind, um als alleinige Methode zur Verwaltung von Code in einem professionellen, automatisierten Umfeld eingesetzt zu werden. Sie sind nützliche Assistenten, können aber den menschlichen Urteilskraft oder etablierte Erkennungsmethoden noch nicht ersetzen.

Bewaffnet mit dem leistungsfähigsten Modell und der effektivsten Art des Promptings wandten die Forscher ihre Aufmerksamkeit dann der realen Welt zu. Sie wählten zweiundzwanzig Paare von Open-Source-Microservice-Repositories aus, wobei eines das Originalprojekt war und das andere ein Fork, der von einer anderen Gruppe von Entwicklern modifiziert worden war. Sie speisten diese Codebasen in ihr System ein, um genau zu kartieren, welche Arten von Duplikaten zwischen dem Original und dem Fork existierten. Die Ergebnisse zeichneten ein klares Bild davon, wie sich diese Projekte entwickeln. Der häufigste Typ des Duplikats, den sie fanden, war die exakte Kopie, bei der der Code unverändert blieb. Der zweithäufigste war der Type-3-Klon, bei dem der Code durch Hinzufügungen oder Löschungen verändert wurde, aber seine ursprüngliche Funktionalität beibehielt. Überraschenderweise war der völlig neu geschriebene Code, der dasselbe tut, aber auf eine völlig andere Weise, in diesen spezifischen Projekten weniger verbreitet als die anderen Arten. Dies deutet darauf hin, dass Entwickler, wenn sie einen Microservice forken, dazu neigen, die Kernstruktur intakt zu halten, anstatt das Rad komplett neu zu erfinden.

Um sicherzustellen, dass ihre automatisierten Ergebnisse vertrauenswürdig waren, verglichen die Forscher die Ausgaben des Modells mit einer manuellen Überprüfung von drei der Projekte durch menschliche Experten. Die menschlichen Prüfer bestätigten, dass das Modell im Allgemeinen korrekt darin war, die häufigsten Arten von Duplikaten zu identifizieren, obwohl die spezifischen Zahlen je nach der zugrunde liegenden Technologie variierten, die das Modell zum Lesen des Codes verwendete. Die Studie kam zu dem Schluss, dass Künstliche Intelligenz zwar eine vielversprechende neue Möglichkeit bietet, die tiefen, semantischen Beziehungen zwischen Codestücken zu verstehen, sie aber noch keine perfekte Lösung ist. Die Technologie ist zwar leistungsstark genug, um Muster zu erkennen, die Menschen und ältere Werkzeuge übersehen könnten, aber sie kämpft immer noch mit der hohen Tragweite, ein Duplikat gänzlich zu übersehen. Für den Moment dienen diese Modelle am besten als Leitfaden, der Entwicklern hilft, die komplexe Geschichte ihres Codes zu navigieren, anstatt als endgültige Instanz. Der Weg nach vorn besteht darin, diese Werkzeuge zu verfeinern, um ihre Fehler zu reduzieren, und ihr semantisches Verständnis mit traditionellen Methoden zu kombinieren, um ein vollständigeres Bild der Softwareentwicklung zu erstellen.

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.

Digest testen →