Ü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.
Die Codenavigation verwendet die Open Source-Bibliothek tree-sitter
. Die folgenden Sprachen und Navigationsstrategien werden unterstützt.
Sprache | Suchbasierte Codenavigation | Prä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 findest du 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.
-
Wähle ein Repository aus, und navigiere dann zu einer Datei, die Symbole enthält.
-
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.
-
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.
-
Um zwischen Verweisen auf ein Symbol zu navigieren, klicke auf oder .
-
Wenn du zu einem bestimmten Verweis auf ein Symbol navigieren möchtest, klicke unter In dieser Datei auf ein Ergebnis der Symbolsuche.
-
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.
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.
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.
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.
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.