Skip to main content

Consulter le code source du CLI CodeQL

Configurez le CodeQL CLI directement à partir du code source.

Qui peut utiliser cette fonctionnalité ?

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

Certains utilisateurs préfèrent travailler directement avec CodeQL des sources de requête afin de créer ou de contribuer à des requêtes open source partagées.

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.

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

Remarque

Pour GitHub Enterprise Server 3.16, nous recommandons la version CodeQL CLI 2.20.3.

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. Créer un nouveau répertoire CodeQL

Créez un répertoire dans lequel vous pouvez placer l’interface CLI et toutes les requêtes et bibliothèques que vous souhaitez utiliser. Par exemple : $HOME/codeql-home.

Les opérations de recherche intégrées de l’interface CLI recherchent automatiquement dans tous ses répertoires frères les fichiers utilisés lors de la création et de l’analyse de la base de données. Le fait de garder ces composants dans leur propre répertoire empêche l’interface CLI de rechercher dans des répertoires frères non concernés tout en s’assurant que tous les fichiers sont disponibles sans spécifier d’autres options sur la ligne de commande.

3. Obtenir une copie locale des CodeQL requêtes

Le CodeQL référentiel contient les requêtes et bibliothèques requises pour CodeQL l’analyse de toutes les langues prises en charge. Clonez une copie de ce dépôt dans codeql-home.

Par défaut, la racine du dépôt cloné est nommée codeql. Renommez ce dossier codeql-repo pour éviter les conflits avec celui que vous allez extraire à l’étape CodeQL CLI 1. Si vous utilisez git sur la ligne de commande, vous pouvez cloner et renommer le dépôt en une seule étape en exécutant git clone git@github.com:github/codeql.git codeql-repo dans le dossier codeql-home.

Dans ce référentiel, les requêtes et les bibliothèques sont organisées en CodeQL Packs. En plus des requêtes elles-mêmes, les CodeQL packs contiennent des métadonnées importantes qui indiquent au CodeQL CLI comment traiter les fichiers de requête. Pour plus d’informations, consultez « Création et utilisation de packs CodeQL ».

Remarque

Il existe différentes versions des CodeQL requêtes disponibles pour différents utilisateurs. Consultez la version qui convient à votre cas d’usage :

  • Pour les requêtes destinées à être utilisées avec la dernière CodeQL CLI version, consultez la branche marquée codeql-cli/latest. Vous devez utiliser cette branche pour les bases de données que vous avez créées à l’aide du CodeQL CLI ou que vous avez récemment téléchargées depuis GitHub.
  • Pour obtenir les requêtes les plus récentes CodeQL, consultez la branche main. Cette branche représente la dernière version de CodeQLl’analyse.

4. Extraire l’archive CodeQL CLI tar

Extrayez l’archive tar dans le répertoire que vous avez créé à l’étape 2.

Par exemple, si le chemin d’accès à votre copie du CodeQL référentiel est $HOME/codeql-home/codeql-repo, extrayez l’interface CLI dans $HOME/codeql-home/.

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

6. Vérifiez votre CodeQL CLI configuration

          CodeQL CLI dispose de sous-commandes que vous pouvez exécuter pour vérifier que vous êtes correctement configuré pour créer et analyser des bases de données :
  • Exécutez codeql resolve languages pour afficher 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.
  • Exécutez codeql resolve qlpacks pour afficher les CodeQL packs que l’interface CLI peut trouver. Cela affiche les noms de tous les CodeQL packs directement disponibles pour le CodeQL CLI. Cela devrait inclure :
    • Les packs de requêtes pour chaque langage pris en charge, par exemple codeql/{language}-queries. Ces packs contiennent les requêtes standard qui seront exécutées pour chaque analyse.
    • Les packs de bibliothèques pour chaque langage pris en charge, par exemple codeql/{language}-all. Ces packs contiennent des bibliothèques de requêtes, telles que les bibliothèques de flux de contrôle et de flux de données, qui peuvent être utiles aux auteurs de requêtes.
    • Les packs d’exemples pour chaque langage pris en charge, par exemple codeql/{language}-examples. Ces packs contiennent des extraits de code utiles que les rédacteurs de requêtes pourraient trouver avantageux.
    • Les packs hérités qui garantissent que les requêtes et bibliothèques personnalisées créées à l’aide de produits plus anciens sont compatibles avec votre version de CodeQL.