Back to Gitlabhq

Intelligence du code

doc-locale/fr-fr/user/project/code_intelligence.md

19.2.07.7 KB
Original Source

{{< details >}}

  • Édition : Gratuite, GitLab Premium, GitLab Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

L'intelligence de code ajoute des fonctionnalités de navigation dans le code communes aux environnements de développement interactifs (IDE), notamment :

  • Signatures de types et documentation des symboles.
  • Aller à la définition.

L'intelligence de code est intégrée à GitLab et repose sur LSIF (Language Server Index Format), un format de fichier pour les données d'intelligence de code précalculées. GitLab traite un seul fichier LSIF par projet, et l'intelligence de code ne prend pas en charge différents fichiers LSIF par branche.

SCIP représente la prochaine évolution des outils d'indexation du code source. Vous pouvez l'utiliser pour alimenter les fonctionnalités de navigation dans le code, telles que :

  • Aller à la définition
  • Trouver des références

GitLab ne prend pas nativement en charge SCIP pour l'intelligence de code. Cependant, vous pouvez utiliser le SCIP CLI pour convertir les index générés avec les outils SCIP en un fichier compatible LSIF. Pour les discussions sur la prise en charge native de SCIP, consultez l'issue 412981.

Pour suivre l'avancement des améliorations à venir de l'intelligence de code, consultez l'epic 4212.

Configurer l'intelligence de code {#configure-code-intelligence}

Prérequis :

Pour savoir comment votre langage est le mieux pris en charge, consultez les indexeurs recommandés par Sourcegraph.

Avec le composant CI/CD {#with-the-cicd-component}

{{< history >}}

  • La prise en charge de Python a été introduite dans GitLab 17.9.
  • La prise en charge de .Net/C# a été introduite dans GitLab 18.0.

{{< /history >}}

GitLab fournit un composant CI/CD pour configurer l'intelligence de code dans votre fichier .gitlab-ci.yml. Le composant prend en charge les langages suivants :

  • Go version 1.21 ou ultérieure.
  • TypeScript ou JavaScript.
  • Java 8, 11, 17 et 21.
  • Python
  • .Net/C#

Pour contribuer d'autres langages au composant, ouvrez une merge request dans le projet du composant d'intelligence de code.

  1. Ajoutez un composant CI/CD GitLab à votre fichier .gitlab-ci.yml du projet. Par exemple, ce job génère l'artefact LSIF pour Go :

    yaml
    include:
      - component: ${CI_SERVER_FQDN}/components/code-intelligence/[email protected]
        inputs:
          golang_version: ${GO_VERSION}
    
  2. Pour obtenir les instructions de configuration du composant d'intelligence de code, consultez le README pour chaque langage pris en charge.

  3. Pour plus d'informations, consultez utiliser un composant.

Ajouter des jobs CI/CD pour l'intelligence de code {#add-cicd-jobs-for-code-intelligence}

Pour activer l'intelligence de code pour un projet, ajoutez des jobs GitLab CI/CD à votre fichier .gitlab-ci.yml du projet.

{{< tabs >}}

{{< tab title="Avec un indexeur SCIP" >}}

  1. Ajoutez un job à votre configuration .gitlab-ci.yml. Ce job génère l'index SCIP et le convertit en LSIF pour utilisation dans GitLab :

    yaml
    "code_navigation":
       rules:
       - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # the job only needs to run against the default branch
       image: node:latest
       stage: test
       allow_failure: true # recommended
       script:
          - npm install -g @sourcegraph/scip-typescript
          - npm install
          - scip-typescript index
          - |
             env \
             TAG="v0.4.0" \
             OS="$(uname -s | tr '[:upper:]' '[:lower:]')" \
             ARCH="$(uname -m | sed -e 's/x86_64/amd64/')" \
             bash -c 'curl --location "https://github.com/sourcegraph/scip/releases/download/$TAG/scip-$OS-$ARCH.tar.gz"' \
             | tar xzf - scip
          - chmod +x scip
          - ./scip convert --from index.scip --to dump.lsif
       artifacts:
          reports:
             lsif: dump.lsif
    
  2. Selon votre configuration CI/CD, vous pourriez avoir besoin d'exécuter le job manuellement, ou d'attendre qu'il s'exécute dans le cadre d'un pipeline existant.

{{< /tab >}}

{{< tab title="Avec un indexeur LSIF" >}}

  1. Ajoutez un job (code_navigation) à votre configuration .gitlab-ci.yml pour générer l'index :

    yaml
    code_navigation:
       rules:
       - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # the job only needs to run against the default branch
      image: sourcegraph/lsif-go:v1
      allow_failure: true # recommended
      script:
        - lsif-go
      artifacts:
        reports:
          lsif: dump.lsif
    
  2. Selon votre configuration CI/CD, vous pourriez avoir besoin d'exécuter le job manuellement, ou d'attendre qu'il s'exécute dans le cadre d'un pipeline existant.

{{< /tab >}}

{{< /tabs >}}

[!note] GitLab limite l'artefact produit par les jobs de génération de code à 200 Mo via la limite d'application d'artefact (ci_max_artifact_size_lsif). Sur les instances GitLab Self-Managed, un administrateur d'instance peut modifier cette valeur.

Afficher les résultats de l'intelligence de code {#view-code-intelligence-results}

Une fois le job terminé avec succès, parcourez votre dépôt pour consulter les informations d'intelligence de code :

  1. Dans la barre supérieure, sélectionnez Rechercher ou aller à et accédez à votre projet.

  2. Dans la barre latérale gauche, sélectionnez Code > Dépôt.

  3. Accédez au fichier dans votre dépôt. Si vous connaissez le nom du fichier, effectuez l'une des actions suivantes :

    • Saisissez le raccourci clavier /~ pour ouvrir le sélecteur de fichiers, puis saisissez le nom du fichier.
    • En haut à droite, sélectionnez Rechercher un fichier.
  4. Pointez sur les lignes de code. Les éléments de cette ligne disposant d'informations issues de l'intelligence de code affichent une ligne pointillée en dessous :

  5. Sélectionnez l'élément pour en savoir plus à son sujet.

Trouver des références {#find-references}

Utilisez l'intelligence de code pour voir toutes les utilisations d'un objet :

  1. Dans la barre supérieure, sélectionnez Rechercher ou aller à et accédez à votre projet.

  2. Dans la barre latérale gauche, sélectionnez Code > Dépôt.

  3. Accédez au fichier dans votre dépôt. Si vous connaissez le nom du fichier, effectuez l'une des actions suivantes :

    • Saisissez le raccourci clavier /~ pour ouvrir le sélecteur de fichiers, puis saisissez le nom du fichier.
    • En haut à droite, sélectionnez Rechercher un fichier.
  4. Pointez sur l'objet, puis sélectionnez-le.

  5. Dans la boîte de dialogue, sélectionnez :

    • Définition pour voir une définition de cet objet.
    • Références pour afficher la liste des fichiers qui utilisent cet objet.