Skip to main content

Configuration de CodeQL CLI

Pour commencer Ă  utiliser CodeQL CLI, vous devez tĂ©lĂ©charger et configurer l’interface CLI afin qu’elle puisse accĂ©der aux outils et aux bibliothĂšques nĂ©cessaires Ă  la crĂ©ation et Ă  l’analyse des bases de donnĂ©es.

Qui peut utiliser cette fonctionnalité ?

CodeQL est disponible pour les types de rĂ©fĂ©rentiels suivants :

Configuration de CodeQL CLI

Pour exĂ©cuter les commandes CodeQL, vous devez configurer l’interface CLI afin qu’elle puisse accĂ©der aux outils, aux requĂȘtes et aux bibliothĂšques nĂ©cessaires Ă  la crĂ©ation et Ă  l’analyse des bases de donnĂ©es.

CodeQL CLI peut ĂȘtre configurĂ© pour prendre en charge de nombreux cas d’usage et structures de rĂ©pertoires diffĂ©rents. Pour commencer rapidement, nous vous recommandons d’adopter une configuration relativement simple, comme indiquĂ© dans les Ă©tapes ci-dessous.

Si vous prĂ©voyez d'utiliser CodeQL CLI pour des recherches sur la sĂ©curitĂ© ou pour tester ou contribuer Ă  des requĂȘtes, vous voudrez peut-ĂȘtre une configuration plus avancĂ©e de CodeQL CLI. Pour plus d’informations, consultez « Installation avancĂ©e de l'interface CLI CodeQL Â».

Si vous crĂ©ez CodeQL CLI dans votre systĂšme de CI, vous devez rendre le contenu complet de l'offre groupĂ©e CodeQL CLI disponible pour chaque serveur CI sur lequel vous souhaitez exĂ©cuter l'analyse CodeQL code scanning. Par exemple, vous pouvez configurer chaque serveur pour copier le bundle Ă  partir d’un emplacement central interne et l’extraire. Vous pouvez Ă©galement utiliser l’API REST pour obtenir le bundle directement Ă  partir de GitHub, bĂ©nĂ©ficiant ainsi des derniĂšres amĂ©liorations apportĂ©es aux requĂȘtes. Pour plus d’informations, consultez Points de terminaison d’API REST pour les versions et les ressources de mise en production dans la documentation de l’API REST.

Si vous utilisez macOS sur Apple Silicon (par exemple, Apple M1), assurez-vous que les outils de dĂ©veloppement en ligne de commande Xcode et Rosetta 2 sont installĂ©s.

Remarque

Le CodeQL CLI n'est actuellement pas compatible avec les distributions Linux non glibc telles que Alpine Linux (basée sur muslc).

1. TĂ©lĂ©charger l’archive tar CodeQL CLI

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.

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 tar CodeQL CLI

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

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.

Remarque

Si vous ajoutez codeql Ă  votre PATH, il est accessible par CodeQL pour que Visual Studio Code compile et exĂ©cute les requĂȘtes. Pour plus d’informations sur la configuration de VS Code pour accĂ©der au CodeQL CLI, consultez Configuration de l’accĂšs Ă  la CLI CodeQL.

Test de la configuration de l’CodeQL CLI

AprĂšs avoir extrait le bundle de CodeQL CLI, 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 vous avez rĂ©ussi, vous devriez obtenir un rĂ©sultat similaire Ă  l’extrait ci-dessous :

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'offre groupĂ©e CodeQL CLI extraite, qui est montrĂ© dans l'exemple prĂ©cĂ©dent en tant que <extraction root>. Si l’CodeQL CLI ne peut pas localiser les qlpacks pour les langages attendus, vĂ©rifiez que vous avez tĂ©lĂ©chargĂ© le bundle CodeQL et non une copie autonome de l’CodeQL CLI.

Vous pouvez aussi exécuter codeql resolve languages pour montrer les langages disponibles pour la création de base de données. Cette opération liste les langages pris en charge par défaut dans votre package CodeQL CLI.

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 Â».

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 qui devraient ĂȘtre disponibles pour l’analyse.

Remarque

La commande codeql resolve packs est disponible dans les donnĂ©es 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 Ă  analyser par les donnĂ©es CodeQL CLI, reportez-vous Ă  PrĂ©paration de votre code pour l’analyse CodeQL.