À propos de la navigation dans du code sur GitHub
La navigation dans le code vous permet de lire, naviguer et comprendre le code en affichant et en liant des définitions d’une entité nommée correspondant à une référence à cette entité, ainsi que des références correspondant à la définition d’une entité.
La navigation dans le code utilise la bibliothèque open source tree-sitter
. Les langages et stratégies de navigation suivants sont pris en charge.
Langage | Navigation dans le code basé sur la recherche | Navigation précise dans le code |
---|---|---|
Bash | ||
C | ||
C# | ||
C++ | ||
CodeQL | ||
Elixir | ||
Go | ||
JSX | ||
Java | ||
JavaScript | ||
Lua | ||
PHP | ||
Mémoires tampon de protocole | ||
Python | ||
R | ||
Ruby | ||
Rust | ||
Scala | ||
Starlark | ||
Swift | ||
TypeScript |
Vous n’avez pas besoin de configurer quoi que ce soit dans votre référentiel pour activer la navigation dans le code. Nous allons extraire automatiquement des informations de navigation de code basées sur la recherche et précises pour ces langages pris en charge dans tous les référentiels et vous pouvez basculer entre les deux approches de navigation de code prises en charge si votre langage de programmation est pris en charge par les deux.
GitHub a développé deux approches de navigation de code basées sur la bibliothèque open source tree-sitter
et stack-graphs
:
- Basée sur la recherche : recherche toutes les définitions et références dans un référentiel pour trouver des entités portant un nom donné
- Précise : résout les définitions et les références en fonction de l’ensemble de classes, de fonctions et de définitions importées à un point donné dans votre code
Pour en savoir plus sur ces approches, consultez « Navigation précise et basée sur la recherche ».
Les versions ultérieures ajouteront une navigation de code précise pour d’autres langages, qui est une approche de navigation de code qui peut donner des résultats plus précis.
Vous pouvez utiliser des raccourcis clavier pour naviguer dans un fichier de code. Pour plus d’informations, consultez « Raccourcis clavier ».
Utilisation du volet de symboles
Vous pouvez désormais voir et naviguer rapidement parmi les symboles tels que les fonctions ou les classes dans votre code avec le volet de symboles. Vous pouvez rechercher un symbole dans un seul fichier, dans tous les fichiers d’un dépôt ou même dans tous les dépôts publics sur GitHub.
La recherche de symboles est une fonctionnalité de la recherche de code. Pour plus d’informations, consultez « Présentation de la syntaxe de GitHub Code Search ».
-
Sélectionnez un dépôt, puis accédez à un fichier contenant des symboles.
-
Pour afficher le volet de symboles, au-dessus du contenu du fichier, cliquez sur .
Vous pouvez également ouvrir le volet de symboles en cliquant sur un symbole éligible dans votre fichier. Les symboles cliquables sont mis en surbrillance en jaune quand vous pointez sur eux.
-
Cliquez sur le symbole à rechercher dans le volet de symboles ou dans le fichier lui-même.
- Pour rechercher un symbole dans l’ensemble du dépôt, dans le volet des symboles, cliquez sur Rechercher ce symbole dans ce dépôt. Pour rechercher un symbole dans tous les dépôts de GitHub, cliquez sur tous les dépôts.
-
Pour naviguer parmi les références à un symbole, cliquez sur ou sur .
-
Pour accéder à une référence spécifique à un symbole, cliquez sur le résultat de la recherche de symboles sous Dans ce fichier.
-
Pour quitter la recherche d’un symbole spécifique, cliquez sur Tous les symboles.
Accès à la définition d’une fonction ou d’une méthode
Vous pouvez accéder à la définition d’une fonction ou d’une méthode dans le même référentiel en cliquant sur l’appel de fonction ou de méthode dans un fichier.
Recherche de toutes les références d’une fonction ou d’une méthode
Vous pouvez trouver toutes les références d’une fonction ou d’une méthode dans le même dépôt en cliquant sur la fonction ou l’appel de méthode dans un fichier.
Navigation précise et basée sur la recherche
Certains langages pris en charge par GitHub ont accès à une navigation de code précise, qui utilise un algorithme (basé sur la bibliothèque open sourcestack-graphs
) qui résout les définitions et les références basées sur l’ensemble de classes, de fonctions et de définitions importées visibles à un moment donné dans votre code. D’autres langages utilisent la navigation de code basée sur la recherche, qui recherche toutes les définitions et références dans un référentiel pour rechercher des entités portant un nom donné. Les deux stratégies sont efficaces pour trouver des résultats et veillent à éviter les résultats inappropriés tels que les commentaires, mais la navigation précise dans le code peut donner des résultats plus précis, en particulier lorsqu’un référentiel contient plusieurs méthodes ou fonctions portant le même nom.
Si vous ne voyez pas les résultats attendus à partir d’une requête de navigation de code précise, vous pouvez cliquer sur le lien « basé sur la recherche » dans la fenêtre contextuelle affichée pour effectuer une navigation basée sur la recherche.
Si vos résultats précis semblent inexacts, vous pouvez déposer une demande de support.
Navigation précise dans le code entre référentiels
La navigation dans le code entre référentiels est disponible pour les langues prises en charge par la navigation précise dans le code et le graphe des dépendances. Pour plus d’informations, consultez « À propos du graphe de dépendances ». Avec la navigation dans le code entre référentiels, vous pouvez accéder à la définition de fonctions ou de variables définies dans les dépendances importées par votre projet si cette dépendance est un référentiel hébergé par GitHub. La navigation dans le code entre référentiels ne prend pas en charge les demandes de recherche toutes les références pour l’instant.
Résolution des problèmes de navigation dans le code
Si la navigation dans le code est activée pour vous, mais que vous ne voyez pas de liens vers les définitions de fonctions et de méthodes :
- La navigation dans le code fonctionne uniquement pour les branches actives. Envoyez (push) à la branche et réessayez.
- La navigation dans le code fonctionne uniquement pour les référentiels avec moins de 100 000 fichiers.