# Configuration de CodeQL CLI

Pour commencer, CodeQL CLIvous devez télécharger et configurer l’interface CLI afin qu’elle puisse accéder aux outils et bibliothèques nécessaires pour créer et analyser des bases de données.

## Configuration de CodeQL CLI

Pour exécuter CodeQL des commandes, vous devez configurer CodeQL CLI pour qu'il puisse accéder aux outils, aux requêtes et aux bibliothèques nécessaires pour créer et analyser des bases de données.

Le CodeQL CLI prend en charge une gamme de cas d'utilisation et de structures d'annuaire. Cet article décrit une configuration simple qui fonctionne pour la plupart des utilisateurs et des environnements.

Si vous envisagez d'utiliser CodeQL CLI pour la recherche en sécurité ou pour tester et contribuer des requêtes, vous aurez peut-être besoin d'une configuration plus avancée. Pour plus d’informations, consultez « [À propos de CodeQL CLI](/fr/code-security/concepts/code-scanning/codeql/about-the-codeql-cli#getting-started) ».

### Avant de commencer

Si vous utilisez macOS sur Apple Silicon (par exemple, Apple M1), assurez-vous que les [outils de développement en ligne de commande Xcode](https://developer.apple.com/library/archive/technotes/tn2339/_index.html) et [Rosetta 2](https://support.apple.com/en-us/HT211861) sont installés.

> \[!NOTE]
> Actuellement, CodeQL CLI n’est pas compatible avec les distributions Linux qui ne sont pas basées sur glibc, telles qu’Alpine Linux (basées sur muslc).

### 1. Télécharger l’archive CodeQL CLI tar

Le package de téléchargement CodeQL CLI est une archive tar contenant des outils, des scripts et divers fichiers spécifiques à CodeQL. Si vous n’avez pas de licence GitHub Enterprise, en téléchargeant cette archive, vous acceptez les [conditions générales de GitHub CodeQL](https://securitylab.github.com/tools/codeql/license).

Vous devez télécharger le bundle CodeQL à partir de <https://github.com/github/codeql-action/releases>. Le bundle contient :

* L’CodeQL CLI
* Une version compatible des requêtes et des bibliothèques de <https://github.com/github/codeql>
* Versions précompilées de toutes les requêtes incluses dans le bundle

Vous devez toujours utiliser le bundle CodeQL. Cela garantit la compatibilité et offre de meilleures performances qu’un téléchargement de CodeQL CLI et une extraction des requêtes CodeQL. Si vous envisagez d’exécuter l’interface CLI sur une seule plateforme, téléchargez le fichier `codeql-bundle-PLATFORM.tar.zst` approprié. Vous pouvez également télécharger `codeql-bundle.tar.zst` qui contient l’interface CLI pour toutes les plateformes prises en charge.

Il existe également des variantes `tar.gz` du bundle, qui sont identiques aux variantes `tar.zst`, sauf qu’elles sont compressées à l’aide de l’algorithme gzip moins efficace. La seule raison de télécharger les variantes `tar.gz` est si vous utilisez des outils de décompression plus anciens qui ne prennent pas en charge l’algorithme de compression Zstandard.

### 2. Extraire l’archive CodeQL CLI tar

Extrayez l’archive CodeQL CLI tar dans un répertoire de votre choix.

### Facultatif : rendre disponible CodeQL CLI dans votre système CI

Si vous envisagez d’exécuter CodeQLcode scanning l’analyse dans un système d'intégration continue, vérifiez que le contenu complet de l'ensemble CodeQL CLI est disponible pour chaque serveur CI qui exécutera l’analyse.

Par exemple, vous pouvez :

* Copiez le paquet à partir d’un emplacement interne central et extrayez-le sur chaque serveur, ou
* Utilisez l'API REST pour télécharger le bundle directement à partir de GitHub afin de vous assurer de bénéficier des dernières améliorations des requêtes. Pour plus d’informations, consultez « [Points de terminaison d’API REST pour les versions et les ressources de mise en production](/fr/rest/releases) ».

### 3. Lancer `codeql`

Une fois extrait, vous pouvez exécuter des processus CodeQL en exécutant le fichier exécutable `codeql` de deux façons :

* En exécutant `<extraction-root>/codeql/codeql`, où `<extraction-root>` est le dossier dans lequel vous avez extrait le package de CodeQL CLI.
* En ajoutant `<extraction-root>/codeql` à votre `PATH`, afin de pouvoir exécuter le fichier exécutable uniquement comme `codeql`.

À ce stade, vous pouvez exécuter des commandes CodeQL. Pour obtenir la liste complète des commandes CodeQL CLI, consultez [Manuel des commandes de l’interface CLI CodeQL](/fr/code-security/codeql-cli/codeql-cli-manual).

> \[!NOTE]
> Si vous ajoutez `codeql` à votre `PATH`, il peut être accédé par CodeQL pour Visual Studio Code compiler et exécuter des requêtes. Pour plus d'information sur la configuration de VS Code pour accéder à CodeQL CLI, consultez [Gestion de l’interface CLI CodeQL dans l’extension VS Code](/fr/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/configuring-access-to-the-codeql-cli).

## Test de la CodeQL CLI configuration

Après avoir extrait le CodeQL CLI bundle, vous pouvez exécuter la commande suivante pour vérifier que l’interface CLI est correctement configurée pour créer et analyser des bases de données :

* `codeql resolve packs` si `/<extraction root>/codeql` est dans le `PATH`.
* Sinon, `/<extraction root>/codeql/codeql resolve packs`.

Si cela fonctionne, le résultat devrait ressembler à l’extrait ci-dessous :

```shell
Searching directories specified by `--additional-packs`. All directories have equal priority.
  Searching in:
    No packs were found at this location.
Searching directories specified by `--search-path`. Directories are searched in order.
Searching the root of the CodeQL distribution.
  Searching in:
      <extraction root>
    The following packs were found:
      codeql/java-all@<version>: (library) <extraction root>/qlpacks/codeql/javat-all/<version>/qlpack.yml
      codeql/java-queries@<version>: (query) <extraction root>/qlpacks/codeql/java-queries/<version>/qlpack.yml
      codeql/javascript-all@<version>: (library) <extraction root>/qlpacks/codeql/javascript-all/<version>/qlpack.yml
      codeql/javascript-queries@<version>: (query) <extraction root>/qlpacks/codeql/javascript-queries/<version>/qlpack.yml
      codeql/swift-all@<version>: (library) <extraction root>/qlpacks/codeql/swift-all/<version>/qlpack.yml
      codeql/swift-queries@<version>: (query) <extraction root>/qlpacks/codeql/swift-queries/<version>/qlpack.yml
...
```

Les résultats ont été tronqués par souci de concision. Les résultats réels seront plus longs et détaillés.

Vous devez vérifier que la sortie contient les langages attendus et que l’emplacement du répertoire des fichiers qlpack est correct. L’emplacement doit se trouver dans l’ensemble extrait CodeQL CLI , illustré dans l’exemple précédent comme `<extraction root>`. Si le CodeQL CLI ne parvient pas à localiser les qlpacks pour les langues attendues, vérifiez que vous avez téléchargé le lot CodeQL et non un fichier CodeQL CLI autonome.

Vous pouvez aussi exécuter `codeql resolve languages` pour montrer les langages disponibles pour la création de base de données. Cela répertorie les langues prises en charge par défaut dans votre CodeQL CLI package.

Si vous le souhaitez, vous pouvez télécharger des packs CodeQL contenant des requêtes précompilées que vous voulez exécuter. Pour plus d’informations, consultez « [Personnalisation de l’analyse avec des packs CodeQL](/fr/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs) ».

La commande `codeql resolve packs` est utile pour diagnostiquer les problèmes lorsque le CodeQL CLI ne parvient pas à localiser les packs de requêtes que vous vous attendez à être disponibles pour l'analyse.

> \[!NOTE] La `codeql resolve packs` commande est disponible dans les CodeQL CLI versions 2.19.0 et ultérieures. Pour les versions antérieures de la CLI, vous devez exécuter la commande `codeql resolve qlpacks`, qui produit un résultat similaire, mais moins détaillé.

## Étapes suivantes

Pour savoir comment préparer votre code à être analysé par CodeQL CLI, consultez [Préparation de votre code pour l’analyse CodeQL](/fr/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis).