← Neueste Arbeiten
💻 computer science

Generating Complex Code Analyzers from Natural Language Questions

Dieser Beitrag stellt Merlin vor, ein System, das Large Language Models mit dem CodeQL-Programm-Analyserahmenwerk durch einen neuartigen RAG-basierten Ansatz für iterative Generierung und Selbsttest kombiniert, um komplexe natürliche Sprachfragen zu großen Codebasen effektiv zu beantworten und dabei die Genauigkeit und Effizienz von Entwickleraufgaben erheblich zu verbessern.

Ursprüngliche Autoren: Amirmohammad Nazari, Sadra Sabouri, Wang Bill Zhu, Robin Jia, Souti Chattopadhyay, Mukund Raghothaman

Veröffentlicht 2026-05-12
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Ursprüngliche Autoren: Amirmohammad Nazari, Sadra Sabouri, Wang Bill Zhu, Robin Jia, Souti Chattopadhyay, Mukund Raghothaman

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

Stellen Sie sich vor, Sie besitzen eine riesige Bibliothek mit Millionen von Büchern (der Codebasis), die in einer sehr spezifischen, technischen Sprache verfasst sind. Sie sind ein Bibliothekar (der Entwickler), der ein ganz bestimmtes Muster finden muss: „Finden Sie jedes Buch, in dem sich eine Figur vor ihrer vollständigen Geburt vorstellt."

Dies von Hand zu erledigen, ist unmöglich. Die Verwendung einer einfachen Suchleiste, um nach dem Wort „Geburt" zu suchen (wie bei grep), ist nutzlos, da sie die Bedeutung des Satzes verpasst. Einen superintelligenten KI-Assistenten (ein Large Language Model oder LLM) zu bitten, die gesamte Bibliothek zu lesen und Ihnen die Antwort zu nennen, scheitert oft daran, dass die Bibliothek zu groß ist, als dass die KI sie gleichzeitig in ihrem Gedächtnis halten könnte, oder die KI einfach falsch rät.

Dann kommt Merlin ins Spiel.

Merlin ist ein neues System, das wie ein übermächtiger Übersetzer und Detektiv agiert. Es sitzt zwischen Ihnen (der natürliche englische Sprache spricht) und einer sehr strengen, leistungsstarken Datenbank-Engine namens CodeQL (die die technische Struktur von Code perfekt versteht).

So funktioniert Merlin, unter Verwendung einfacher Analogien:

1. Der Übersetzer (Natürliche Sprache zu CodeQL)

Sie stellen Merlin eine Frage in einfachem Englisch: „Zeigen Sie mir alle Stellen, an denen ein Konstruktor eine Methode aufruft, die später geändert werden kann."
Merlin rät nicht einfach die Antwort. Stattdessen übersetzt es Ihre Frage in eine präzise Abfrage für die CodeQL-Datenbank. Denken Sie an CodeQL als eine riesige, strukturierte Tabelle Ihrer gesamten Codebasis. Merlin schreibt einen spezifischen SQL-ähnlichen Befehl, um diese Tabelle nach den exakten Daten zu fragen, die Sie benötigen.

2. Der „Selbsttest" (Der Lackmustest)

Hier liegt der schwierige Teil: Selbst wenn Merlin eine Abfrage schreibt, die grammatikalisch korrekt aussieht, könnte sie logisch falsch sein. Sie könnte nach „Äpfeln" fragen, wenn Sie „Obst" meinten, oder sie könnte zu wählerisch sein und nichts finden.

Um dies zu beheben, verfügt Merlin über eine Selbsttest-Funktion. Bevor es in Ihrer riesigen Bibliothek sucht, bittet es die KI, ein winziges, gefälschtes Beispiel (ein „Mock"-Szenario) zu erstellen, um zu sehen, ob die Abfrage funktioniert.

  • Die Analogie: Stellen Sie sich vor, Sie testen einen Metalldetektor. Bevor Sie durch die ganze Stadt laufen, gehen Sie durch einen kleinen Garten mit ein paar vergrabenen Münzen. Wenn der Metalldetektor bei den Münzen piept, wissen Sie, dass er funktioniert. Wenn er still bleibt, wissen Sie, dass der Detektor defekt ist, und Sie reparieren ihn, bevor Sie Zeit verschwenden, um die Stadt zu durchsuchen.
  • Das Ergebnis: Wenn die Abfrage diesen kleinen Test nicht besteht, weiß Merlin, dass sie defekt ist, und versucht es erneut.

3. Die „unterstützende Abfrage" (Die Taschenlampe des Detektivs)

Manchmal ist die Abfrage syntaktisch perfekt, findet aber trotzdem nichts, weil die KI ein subtiles Detail missverstanden hat.
Merlin verwendet eine Technik namens unterstützende Abfragen.

  • Die Analogie: Stellen Sie sich vor, Sie suchen in einem Wald nach einer bestimmten Vogelart, aber Ihr Fernglas ist beschlagen. Anstatt nur härter zu starren, bitten Sie einen Helfer, alles herauszurufen, was er gerade in den Bäumen sieht („Ich sehe einen roten Vogel, einen blauen Vogel, ein Eichhörnchen...").
  • Wie es hilft: Indem diese Liste von „Zeugen" gesehen wird, erkennt die KI: „Ah! Ich suchte nach roten Vögeln, aber der Wald ist voller blauer. Ich muss meine Suche ändern." Dies hilft der KI, ihre eigene Logik zu debuggen und die richtige Antwort zu finden.

4. Die Ergebnisse: Warum es wichtig ist

Die Forscher testeten Merlin gegen andere Tools und menschliche Entwickler.

  • Die Nadel im Heuhaufen finden: Merlin fand fast alle Fehler, die existierende professionelle Tools fanden, entdeckte aber auch viele weitere, die die anderen Tools übersehen hatten.
  • Menschliche Geschwindigkeit: In einer Studie, in der echte Programmierer Fehler finden und beheben mussten:
    • Diejenigen, die Merlin nutzten, waren 3,8-mal genauer als diejenigen ohne es.
    • Sie schlossen die Aufgaben 31 % schneller ab.
  • Das „Warum": Ohne Merlin steckten Programmierer oft bei mühsamer, manueller Suche fest oder verließen sich auf KI, die ihnen falsche Antworten gab. Merlin lieferte ihnen eine klare, überprüfbare Liste von Orten und die exakte Logik, die zur Suche verwendet wurde, sodass sie den Ergebnissen vertrauen konnten.

Zusammenfassung

Merlin ist wie ein Übersetzer, der sowohl „menschliches Englisch" als auch „Maschinenlogik" spricht, ein Qualitätskontrollinspektor, der die Anweisungen testet, bevor er sie aussendet, und ein Detektiv, der Taschenlampen verwendet, um herauszufinden, warum eine Suche fehlgeschlagen ist. Es ermöglicht Entwicklern, komplexe Fragen zu riesigen Codebasen zu stellen und zuverlässige, präzise Antworten zu erhalten, ohne selbst Experten für die technische Abfragesprache sein zu müssen.

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 →