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.

Qui peut utiliser cette fonctionnalité ?

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

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
  • 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, Kotlin, 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, consultez 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.

Remarque

  • Le CodeQL CLI est disponible pour les clients disposant d’une licence GitHub Code 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 :

  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 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 code scanning. Pour plus d’informations, consultez « Chargement des rĂ©sultats d'analyse de CodeQL sur GitHub Â».

Remarque

Le chargement des donnĂ©es SARIF Ă  afficher comme rĂ©sultats code scanning dans GitHub est pris en charge pour les rĂ©fĂ©rentiels appartenant Ă  l’organisation avec GitHub Code 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.

# 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

Avis de licence : si vous ne disposez pas d’une licence pour GitHub Code Security, alors, en installant ce produit, vous acceptez les Conditions gĂ©nĂ©rales de GitHub CodeQL.