Schema eines Code Graphs: Rechtecke stehen für Dateien, darin kleinere Kreise für einzelne Funktionen. Pfeile zwischen den Kreisen zeigen Aufrufe über Dateigrenzen hinweg, gestrichelte Pfeile zwischen den Rechtecken zeigen Importbeziehungen.

Code Graph

Ein Code Graph ist eine Landkarte eines Softwareprojekts: Bausteine des Programms sind Punkte, ihre Beziehungen zueinander sind Verbindungslinien. Entwicklungswerkzeuge und KI-Assistenten nutzen ihn, um in großen Projekten zu finden, was zusammenhängt.

Ein Programm besteht aus vielen kleinen Bauteilen. Es gibt Dateien, es gibt benannte Arbeitsschritte, und es gibt Datenbehälter, in denen Werte gespeichert werden. Diese Bauteile hängen voneinander ab: Ein Arbeitsschritt ruft einen anderen auf, eine Datei benutzt Bausteine aus einer zweiten Datei. Ein Code Graph macht dieses Geflecht sichtbar. Jedes Bauteil wird zu einem Punkt, jede Abhängigkeit zu einem Pfeil zwischen zwei Punkten. Das Ergebnis ist eine Art U-Bahn-Plan des Projekts: Man sieht nicht mehr den Text des Programms, sondern wer mit wem verbunden ist.

Warum Suchen allein bei großen Projekten scheitert

Ein ernsthaftes Softwareprojekt hat schnell hunderttausend Zeilen Code oder mehr, verteilt auf tausende Dateien. Niemand kann das im Kopf behalten. Wer eine Stelle ändern will, muss aber wissen, was daran hängt. Wird eine Funktion an drei oder an dreihundert Stellen benutzt? Ohne diese Information ist jede Änderung ein Risiko.

Eine reine Textsuche hilft dabei nur begrenzt. Sie findet jedes Vorkommen eines Wortes, auch in Kommentaren oder in einer völlig anderen Bedeutung. Der Name „update“ kann in einem Projekt zwanzigmal für zwanzig verschiedene Dinge stehen. Der Graph unterscheidet diese Fälle, weil er nicht Buchstaben vergleicht, sondern die tatsächliche Struktur des Programms kennt.

Für KI-Assistenten, die Code schreiben oder erklären, ist das besonders wichtig. Sprachmodelle können nur eine begrenzte Menge Text auf einmal verarbeiten. Ein ganzes Projekt passt da nicht hinein. Der Graph liefert eine Auswahl: genau die Stellen, die mit der Aufgabe zusammenhängen. Das ist der Unterschied zwischen einem Assistenten, der raten muss, und einem, der nachschauen kann.

Vom Quelltext zum Netz aus Punkten und Pfeilen

Der erste Schritt heißt Parsen. Ein Werkzeug liest den Programmtext und zerlegt ihn nach den Grammatikregeln der jeweiligen Programmiersprache. Dabei entsteht ein Baum, der die Struktur jeder Datei abbildet. Aus diesem Baum werden die Punkte des Graphen gewonnen: jede Funktion, jede Klasse, jede Datei.

Danach folgt der schwierigere Teil, die Auflösung der Namen. Steht im Text der Aufruf „berechne()“, muss das Werkzeug entscheiden, welche der vielleicht vier gleichnamigen Funktionen im Projekt gemeint ist. Dafür wertet es aus, welche Bausteine eine Datei importiert und in welchem Zusammenhang der Name steht. Erst wenn diese Zuordnung stimmt, werden die Pfeile korrekt gesetzt.

Der fertige Graph wird gespeichert und bei jeder Änderung nachgeführt. Danach lassen sich Fragen sehr schnell beantworten, weil man nur noch Pfeilen folgen muss. Typische Fragen sind: Wo wird das hier benutzt? Was passiert, wenn ich das lösche? Häufig wird der Graph mit einer zweiten Technik kombiniert, die Codeabschnitte nach inhaltlicher Ähnlichkeit findet. Der Graph liefert dann die harten Verbindungen, die Ähnlichkeitssuche die thematisch passenden Stellen.

Code Graphs in Editoren und KI-Werkzeugen

Wer schon einmal in einer Entwicklungsumgebung programmiert hat, hat einen Code Graph benutzt, ohne es zu merken. Die Funktion „Gehe zur Definition“, die mit einem Klick zur Ursprungsstelle eines Namens springt, greift auf genau solche Daten zu. Dasselbe gilt für sicheres Umbenennen: Der Editor ändert alle wirklich zugehörigen Stellen und lässt zufällige Namensgleichheiten in Ruhe.

In den letzten Jahren ist der Begriff vor allem durch KI-Programmierwerkzeuge in die Nachrichten gekommen. Anbieter werben damit, dass ihr Assistent das gesamte Projekt versteht und nicht nur die geöffnete Datei. Dahinter steckt meist ein Code Graph, der dem Modell die passenden Ausschnitte zuliefert. Auch Werkzeuge zur Sicherheitsprüfung nutzen ihn, um zu verfolgen, ob Daten von außen ungeprüft an eine kritische Stelle gelangen.

Ein häufiger Irrtum ist, der Graph mache ein Modell klüger. Das tut er nicht. Er verbessert nur, was das Modell überhaupt zu sehen bekommt. Außerdem hat er Grenzen: Programme, die Namen erst zur Laufzeit zusammensetzen, lassen sich vorab kaum korrekt verknüpfen. Ein Code Graph ist deshalb eine sehr gute Landkarte, aber nie eine vollständige.

Související produkty

Aktuální zprávy

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.