Skip to main content

Navigation dans le code sur GitHub

Vous pouvez comprendre les relations dans et entre les dépôts en parcourant le code directement dans GitHub.

À 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é.

Capture d’écran montrant un fichier de code avec une fonction appelée « request » mise en évidence et une fenêtre contextuelle avec des informations sur la fonction en dessous. La fenêtre contextuelle a deux onglets : « Définition » et « Référence ».

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.

LangageNavigation dans le code basé sur la rechercheNavigation 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 ».

  1. Sélectionnez un dépôt, puis accédez à un fichier contenant des symboles.

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

  3. 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.
  4. Pour naviguer parmi les références à un symbole, cliquez sur ou sur .

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

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

Capture d’écran de la fenêtre de fonction. Une section, intitulée « Définition », est indiquée en orange foncé.

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.

Capture d’écran de la fenêtre de fonction. Une section, intitulée « 3 références », est indiquée en orange foncé.

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.

Capture d’écran de la fenêtre de fonction. Deux liens, intitulés « Rechercher ce symbole dans ce dépôt » et « tous les dépôts », sont encadrés en orange foncé.

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.

Capture d’écran d’un fichier de code sur GitHub. Sur la ligne « import os », le nom du module « os ». est surligné, et une fenêtre modale « Définitions » affiche un résultat intitulé « cross-repo result ».

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.

Pour aller plus loin