Skip to main content

À propos de CodeQL CLI

Vous pouvez utiliser CodeQL CLI pour exécuter des processus CodeQL localement sur des projets logiciels ou pour générer des résultats de code scanning à charger sur GitHub Enterprise Server.

Qui peut utiliser cette fonctionnalité ?

GitHub CodeQL est concédé sous licence par utilisateur lors de l’installation. Vous pouvez utiliser CodeQL uniquement pour certaines tâches soumises aux restrictions de licence. Pour plus d’informations, consultez « À propos de CodeQL CLI ».

Si vous disposez d’une licence GitHub Advanced Security, vous pouvez utiliser CodeQL pour l’analyse automatisée, l’intégration continue et la livraison continue. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».

Les développeurs de logiciels et les chercheurs en sécurité peuvent sécuriser leur code avec l’analyse de l’CodeQL. Pour plus d’informations sur CodeQL, consultez « À propos de l’analyse du code avec CodeQL ».

L’CodeQL CLI est un outil en ligne de commande autonome que vous pouvez utiliser pour analyser le code. Son objectif principal est de générer une représentation de base de données d’un codebase, une base de données CodeQL. Une fois que la base de données est prête, vous pouvez l’interroger de manière interactive, ou exécuter une suite de requêtes pour générer un ensemble de résultats au format SARIF et charger les résultats dans GitHub.

Vous pouvez utiliser CodeQL CLI pour :

  • Exécuter des analyses CodeQL avec des requêtes fournies par les ingénieurs GitHub et la communauté open source
  • Générer des alertes d’analyse du code que vous pouvez charger pour les afficher dans GitHub Enterprise Server
  • Créer des bases de données CodeQL à utiliser dans le CodeQL pour l’extension Visual Studio Code.
  • Développer et tester des requêtes CodeQL personnalisées à utiliser dans vos propres analyses

Le CodeQL CLI peut analyser :

  • Les langages dynamiques, par exemple, JavaScript et Python.
  • Langages compilés, par exemple, C/C++, C#, Go, Java, et Swift
  • Les codebases écrits dans un mélange de langages.

Pour plus d’informations sur la configuration de CodeQL CLI, consultez « Configuration de CodeQL CLI ».

À propos de l’CodeQL CLI pour l’code scanning

Vous pouvez utiliser l’CodeQL CLI pour exécuter l’code scanning sur le code que vous traitez dans un système d’intégration continue (CI) tiers. Code scanning es une fonctionnalité que vous utilisez pour analyser le code dans un dépôt GitHub afin de détecter d’éventuelles vulnérabilités de sécurité et erreurs de codage. Tous les problèmes identifiés par l’analyse sont énumérés dans votre référentiel. Pour une vue d'ensemble de l'utilisation de l'analyse de code avec des systèmes CI externes, reportez-vous à « Utilisation de l'analyse du code avec votre système CI existant ». Pour découvrir les spécifications recommandées (RAM, cœurs de processeur et disque) pour l’exécution de l’analyse CodeQL, consultez « Ressources matérielles recommandées pour l’exécution de CodeQL ».

Vous pouvez aussi utiliser GitHub Actions ou des pipelines Azure DevOps pour analyser le code en utilisant le CodeQL CLI. Pour plus d’informations, consultez « Définition de la configuration par défaut pour l’analyse du code » ou Configurer GitHub Advanced Security for Azure DevOps dans Microsoft Learn.

Pour obtenir une vue d’ensemble de toutes les options d’utilisation de l’analyse CodeQL pour l’analyse du code, consultez « À propos de l’analyse du code avec CodeQL ».

Remarques :

  • L’CodeQL CLI est disponible pour les clients disposant d’une licence Advanced Security.

  • CodeQL CLI n’est actuellement pas compatible avec les distributions Linux non-glibc comme Alpine Linux (basée sur musl).

À propos de la génération de résultats d'analyse du code avec CodeQL CLI

Si vous choisissez d’exécuter directement CodeQL CLI, vous devez d’abord installer le CodeQL CLI localement. Si vous envisagez d'utiliser le CodeQL CLI avec un système CI externe, vous devez rendre le CodeQL CLI disponible pour les serveurs de votre système CI. Pour plus d’informations, consultez « Configuration de CodeQL CLI ».

Une fois le CodeQL CLI configuré, vous pouvez utiliser trois commandes différentes pour générer des résultats et les charger dans GitHub Enterprise Server :

  1. database create pour créer une base de données CodeQL afin de représenter la structure hiérarchique de chaque langage de programmation pris en charge dans le dépôt. Pour plus d’informations, consultez « Préparation de votre code pour l’analyse CodeQL ».
  2. database analyze pour exécuter des requêtes afin d’analyser chaque base de données CodeQL et de synthétiser les résultats dans un fichier SARIF. Pour plus d’informations, consultez « Analyse de votre code avec des requêtes CodeQL ».
  3. github upload-results pour charger les fichiers SARIF résultants sur GitHub Enterprise Server où les résultats sont mis en correspondance avec une branche ou une demande de tirage (pull request) et affichés sous la forme d’alertes d’code scanning. Pour plus d’informations, consultez « Chargement des résultats d'analyse de CodeQL sur GitHub ».

Remarque : le chargement de données SARIF à afficher comme résultats code scanning dans GitHub Enterprise Server est pris en charge pour des dépôts appartenant à l’organisation avec GitHub Advanced Security activé. Pour plus d’informations, consultez « Gestion des paramètres de sécurité et d’analyse pour votre dépôt ».

Exemple de configuration CI pour l’analyse CodeQL

Il s'agit d'un exemple de la série complète de commandes pour le CodeQL CLI que vous pourriez utiliser pour analyser un codebase avec deux langues prises en charge et ensuite télécharger les résultats vers GitHub Enterprise Server.

# Create CodeQL databases for Java and Python in the 'codeql-dbs' directory
# Call the normal build script for the codebase: 'myBuildScript'

codeql database create codeql-dbs --source-root=src \
    --db-cluster --language=java,python --command=./myBuildScript

# Analyze the CodeQL database for Java, 'codeql-dbs/java'
# Tag the data as 'java' results and store in: 'java-results.sarif'

codeql database analyze codeql-dbs/java java-code-scanning.qls \
    --format=sarif-latest --sarif-category=java --output=java-results.sarif

# Analyze the CodeQL database for Python, 'codeql-dbs/python'
# Tag the data as 'python' results and store in: 'python-results.sarif'

codeql database analyze codeql-dbs/python python-code-scanning.qls \
    --format=sarif-latest --sarif-category=python --output=python-results.sarif

# Upload the SARIF file with the Java results: 'java-results.sarif'
# The GitHub App or personal access token created for authentication
# with GitHub's REST API is available in the `GITHUB_TOKEN` environment variable.

codeql github upload-results \
    --repository=my-org/example-repo \
    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
    --sarif=java-results.sarif

# Upload the SARIF file with the Python results: 'python-results.sarif'

codeql github upload-results \
    --repository=my-org/example-repo \
    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
    --sarif=python-results.sarif

À propos de la licence GitHub CodeQL

Informations sur les licences : Si vous n’avez pas de licence GitHub Enterprise, en installant ce produit, vous acceptez les conditions générales de GitHub CodeQL.

GitHub CodeQL est concédé sous licence par utilisateur. Sous les restrictions de licence, vous pouvez utiliser CodeQL pour effectuer les tâches suivantes :

  • Pour faire des recherches universitaires.
  • Pour faire la démonstration des logiciels.
  • Pour tester les requêtes CodeQL publiées dans le cadre d’une licence approuvée par l’OSI dans le but de vérifier que les nouvelles versions de ces requêtes continuent de trouver les vulnérabilités appropriées.

Où « licence approuvée par l’OSI » désigne une licence logicielle open source approuvée par l’OSI (Open Source Initiative).

Si vous utilisez un codebase open source (c’est-à-dire un codebase publié sous une licence approuvée par l’OSI), vous pouvez également utiliser CodeQL pour les tâches suivantes :

  • Pour effectuer une analyse du codebase open source.
  • Si le codebase open source est hébergé et géré sur GitHub.com, pour générer des bases de données CodeQL pour ou pendant l’analyse automatisée, l’intégration continue ou la livraison continue.

CodeQL ne peut pas être utilisé pour l’analyse automatisée, l’intégration continue ou la livraison continue, que ce soit dans le cadre de processus d’ingénierie logicielle normaux ou autres, sauf dans les cas express décrits dans la présente, sauf si vous disposez d’une licence pour GitHub Advanced Security.