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.

Screenshot einer Codedatei, in der die Funktion „Anforderung“ hervorgehoben ist, und einem Popupfenster mit Informationen zur untenstehenden Funktion. Das Popupfenster hat zwei Registerkarten: „Definition“ und „Verweis“.

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

SpracheSuchbasierte CodenavigationPräzise Codenavigation
Bash
K
C#
C++
CodeQL
Elixir
Go
JSX
Java
JavaScript
Lua
PHP
Protokollpuffer
Python
R
Ruby
Rust
Scala
Starlark
Swift
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.

Du kannst Tastenkombinationen verwenden, um in einer Codedatei zu navigieren. Weitere Informationen finden Sie unter Tastenkombinationen.

Verwenden des Symbolbereichs

Mit dem Symbolbereich kannst du jetzt schnell Symbole wie Funktionen oder Klassen in deinen Code anzeigen und zwischen diesen navigieren. Du kannst in einer einzelnen Datei, in allen Dateien in einem Repository oder sogar in allen öffentlichen Repositorys auf GitHub nach einem Symbol suchen.

Die Symbolsuche ist ein Feature der Codesuche. Weitere Informationen findest du unter Grundlegendes zur Syntax für die Codesuche auf GitHub.

  1. Wähle ein Repository aus, und navigiere dann zu einer Datei, die Symbole enthält.

  2. Klicke zum Öffnen des Symbolbereichs über dem Dateiinhalt auf .

    Alternativ kannst du den Symbolbereich öffnen, indem du in deiner Datei auf ein geeignetes Symbol klickst. Klickbare Symbole werden gelb hervorgehoben, wenn du mit dem Mauszeiger darauf zeigst.

  3. Klicke im Symbolbereich oder in der Datei selbst auf das Symbol, das du suchen möchtest.

    • Um im gesamten Repository nach einem Symbol zu suchen, klicke im Symbolbereich auf Dieses Symbol in diesem Repository suchen. Klicke auf Alle Repositorys, um in allen Repositorys auf GitHub nach einem Symbol zu suchen.
  4. Um zwischen Verweisen auf ein Symbol zu navigieren, klicke auf oder .

  5. Wenn du zu einem bestimmten Verweis auf ein Symbol navigieren möchtest, klicke unter In dieser Datei auf ein Ergebnis der Symbolsuche.

  6. Wenn du die Suche nach einem bestimmten Symbol beenden möchtest, klicke auf Alle Symbole.

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.

Screenshot des Funktionsfensters Der Abschnitt mit dem Titel „Definition“ ist dunkelorange umrandet.

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 klickst.

Screenshot des Funktionsfensters Ein Abschnitt mit dem Titel „3 Verweise“ ist dunkelorange umrandet.

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.

Screenshot des Funktionsfensters Zwei Links mit der Bezeichnung „Dieses Symbol in diesem Repository suchen“ und „Alle Repositorys“ sind dunkelorange umrandet.

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 einer Codedatei auf GitHub In der Zeile „import o.s.“ ist der Modulname „o.s.“ hervorgehoben, und im modalen Dialogfeld „Definitionen“ wird das Ergebnis mit der Bezeichnung „cross-repo result“ angezeigt.

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.

Weitere Informationen