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