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 Cloud
- 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, 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 ».
Note
- L’utilisation de CodeQL CLI est gratuite sur des dépôts publics gérés sur GitHub.com et disponible sur des dépôts privés appartenant à des clients disposant d’une licence Advanced Security. Pour plus d’informations, consultez « Conditions générales de GitHub Enterprise Cloud CodeQL » et « Interface CLI de CodeQL ».
- 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 Cloud :
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 ».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 ».github upload-results
pour charger les fichiers SARIF résultants sur GitHub Enterprise Cloud 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 Cloud est pris en charge pour des dépôts appartenant à l’organisation avec GitHub Advanced Security activé, ainsi que des dépôts publics sur GitHub.com. 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 Cloud.
# 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 pour GitHub Advanced Security, en installant ce produit, vous acceptez les Conditions générales de GitHub CodeQL.
Pour plus d’informations sur la façon dont vous pouvez essayer GitHub Advanced Security gratuitement, consultez « Configuration d’un essai de GitHub Advanced Security ».