Skip to main content

Code-Navigation auf GitHub

Du kannst die Beziehungen in Repositorys und Repository-übergreifend durch die Code-Navigation direkt in GitHub nachvollziehen.

Über Code-Navigation auf GitHub

Die Codenavigation hilft dir dabei, Code zu lesen, in Code zu navigieren und den Code zu verstehen. Dazu kannst du Definitionen einer benannten Entität, die einem Verweis auf diese Entität entsprechen, sowie Verweise, die einer Definition der Entität entsprechen, anzeigen und verknüpfen.

Anzeige der Codenavigation

Die Codenavigation verwendet die Open Source-Bibliothek tree-sitter. Die folgenden Sprachen und Navigationsstrategien werden unterstützt:

SpracheSuchbasierte CodenavigationPräzise Codenavigation
C#
CodeQL
Elixir
Go
Java
JavaScript
PHP
Python
Ruby
Rust
TypeScript

Du brauchst dein Repository nicht zu konfigurieren, um die Codenavigation aktivieren zu können. Bei den unterstützten Sprachen werden Informationen der suchbasierten und präzisen Codenavigation in allen Repositorys automatisch extrahiert. Außerdem kannst du zwischen den beiden unterstützten Codenavigationsansätzen wechseln, wenn deineProgrammiersprache von beiden unterstützt wird.

GitHub hat zwei Codenavigationsansätze auf Basis der Open Source-Bibliothek tree-sitter und stack-graphs entwickelt:

  • Suchbasiert: Alle Definitionen und Verweise in einem Repository werden durchsucht, um Entitäten mit einem bestimmten Namen zu finden
  • Präzise: Definitionen und Verweise werden basierend auf dem Satz von Klassen, Funktionen und importierten Definitionen jederzeit in deinem Code aufgelöst

Weitere Informationen zu diesen Ansätzen findest du unter Präzise und suchbasierte Navigation.

Bei zukünftigen Versionen wird die präzise Codenavigation, ein Codenavigationsansatz, der genauere Ergebnisse liefern kann, für weitere Sprachen verfügbar gemacht.

Zur Definition einer Funktion oder Methode wechseln

Du kannst zur Definition einer Funktion oder Methoden innerhalb des gleichen Repository springen, indem Du auf den Funktions- oder Methodenaufruf in einer Datei klickst.

Registerkarte „Jump-to-definition" (Wechseln zur Definition)

Alle Verweise einer Funktion oder Methode suchen

Du findest alle Referenzen für eine Funktion oder Methode innerhalb eines Repositorys, indem Du auf den Funktions- oder Methodenaufruf in einer Datei und dann auf die Registerkarte Verweise klickst.

Registerkarte „Find all references" (Suche nach allen Referenzen)

Präzise und suchbasierte Navigation

Bestimmte, von GitHub unterstützte Sprachen haben Zugriff auf die präzise Codenavigation, die einen Algorithmus (auf Grundlage der Open Source-Bibliothek stack-graphs) verwendet, der Definitionen und Verweise basierend auf dem Satz von Klassen, Funktionen und importierten Definitionen auflöst, die an jedem Punkt in deinem Code sichtbar sind. Bei anderen Sprachen wird die suchbasierte Codenavigation verwendet, die alle Definitionen und Verweise in einem Repository durchsucht, um Entitäten mit einem bestimmten Namen zu finden. Beide Strategien sind effektiv bei der Suche nach Ergebnissen und vermeiden mit großer Sicherheit ungeeignete Ergebnisse wie Kommentare. Die präzise Codenavigation kann jedoch vor allem bei Repositorys, die mehrere Methoden oder Funktionen mit demselben Namen enthalten, genauere Ergebnisse erzielen.

Wenn bei der präzisen Codenavigation nach einer Abfrage nicht die erwarteten Ergebnisse angezeigt werden, kannst du im angezeigten Popover auf den Link „suchbasiert“ klicken, um die suchbasierte Navigation auszuführen.

Link zur suchbasierten Codenavigation

Wenn die genauen Ergebnisse ungenau erscheinen, kannst du eine Supportanfrage einreichen.

Repositoryübergreifende präzise Codenavigation

Die repositoryübergreifende Codenavigation steht für Sprachen zur Verfügung, die von der präzisen Codenavigation und vom Abhängigkeitsdiagramm unterstützt werden. Weitere Informationen findest du unter Informationen zum Abhängigkeitsdiagramm. Mit der repositoryübergreifenden Codenavigation kannst du zur Definition von Funktionen oder Variablen springen, die in von deinem Projekt importierten Abhängigkeiten definiert sind, wenn diese Abhängigkeit ein Repository ist, das über GitHub gehostet wird. Die repositoryübergreifende Codenavigation unterstützt derzeit keine Suchabfragen für alle Verweise.

Screenshot der repositoryübergreifenden Codenavigation

Problembehandlung bei der Codenavigation

Die Codenavigation ist zwar für dich aktiviert, es werden aber keine Links zu den Definitionen von Funktionen und Methoden angezeigt:

  • Die Codenavigation funktioniert nur bei aktiven Branches. Drücke auf den Branch, und versuche es erneut.
  • Die Codenavigation funktioniert nur für Repositorys mit weniger als 100.000 Dateien.

Weiterführende Themen