Skip to main content

Utilisation de l'analyse du code avec votre système CI existant

Vous pouvez analyser votre code avec CodeQL CLI ou un autre outil dans un système d’intégration continue tiers et charger les résultats dans GitHub. Les alertes code scanning obtenues s’affichent en même temps que toutes les alertes générées dans GitHub.

Qui peut utiliser cette fonctionnalité ?

Utilisateurs avec accès en écriture

Code scanning est disponible pour tous les types de référentiels suivants :

  • Des référentiels publics sur GitHub.com
  • Référentiels appartenant à l’organisation sur GitHub Enterprise Cloud avec GitHub Advanced Security activé

À propos de l'utilisation de code scanning avec votre système CI existant

En guise d'alternative à l'exécution de code scanning dans GitHub à l'aide de GitHub Actions, vous pouvez analyser le code dans un système externe d'intégration continue ou de livraison/déploiement continu (CI/CD), puis télécharger les résultats dans GitHub Enterprise Cloud.

Vous pouvez ajouter le CodeQL CLI à votre système tiers ou utiliser un autre outil d'analyse statique tiers pouvant produire des résultats sous forme de données SARIF (Static Analysis Results Interchange Format) 2.1.0. Pour en savoir plus sur le format SARIF pris en charge, reportez-vous à « Prise en charge de SARIF pour l’analyse du code ».

L’CodeQL CLI est un outil en ligne de commande autonome que vous pouvez utiliser pour analyser le code. Pour plus d’informations, consultez « À propos de CodeQL CLI ».

Les alertes de code scanning que vous exécutez en externe sont affichées de la même façon que celles de code scanning que vous générez dans GitHub. Si vous exécutez l’analyse du code en utilisant plusieurs configurations, il arrive qu’une alerte ait plusieurs origines d’analyse. Si une alerte a plusieurs origines d’analyse, vous pouvez afficher l’état de l’alerte pour chaque origine d’analyse sur la page de l’alerte. Pour plus d’informations, consultez « À propos des alertes d’analyse du code ».

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

Configuration de votre outil d'analyse

Vous devez d'abord télécharger votre outil d'analyse de votre choix et le configurer avec votre système CI.

Si vous utilisez le CodeQL CLI, vous devez mettre le contenu complet de l'offre groupée CodeQL CLI à la disposition de chaque serveur CI sur lequel vous voulez exécuter l'analyse CodeQL code scanning. Pour plus d’informations, consultez « Configuration de CodeQL CLI ».

Une fois que vous avez mis votre outil d'analyse à la disposition des serveurs de votre système de CI, vous êtes prêt à générer des données.

Analyser le code

Pour analyser le code avec CodeQL CLI ou un autre outil d'analyse, vous devez vérifier le code que vous souhaitez analyser et configurer l'environnement de codebase, en vous assurant que toutes les dépendances sont disponibles. Vous pouvez également rechercher la commande de création de codebase, généralement disponible dans le fichier de configuration du système de votre CI.

Vous pouvez ensuite suivre les étapes permettant d'analyser votre codebase et de produire des résultats différents en fonction de l'outil d'analyse statique que vous utilisez.

Si vous utilisez CodeQL CLI, vous devrez d'abord créer une base de données CodeQL à partir de votre code, puis analyser la base de données pour produire des résultats SARIF. Pour plus d’informations, consultez « Préparation de votre code pour l’analyse CodeQL » et « Analyse de votre code avec des requêtes CodeQL ».

Génération d'un jeton pour l'authentification auprès de GitHub Enterprise Cloud

Chaque serveur CI a besoin de GitHub App ou de personal access token à utiliser pour télécharger les résultats vers GitHub Enterprise Cloud, que vous utilisiez CodeQL CLI, l'API REST ou une autre méthode. Vous devez utiliser un jeton d’accès ou une GitHub App avec l’autorisation d’écriture security_events. Si les serveurs CI utilisent déjà un jeton avec cette étendue pour vérifier les référentiels à partir de GitHub Enterprise Cloud, vous pouvez éventuellement utiliser le même jeton. Sinon, vous devez créer un jeton avec l’autorisation d’accès en écriture security_events et l’ajouter au magasin de secrets du système CI. Pour plus d’informations, consultez « À propos de la création d’applications GitHub » et « Gestion de vos jetons d'accès personnels ».

Pour en savoir plus sur les différentes méthodes de chargement des résultats vers GitHub Enterprise Cloud, reportez-vous à « Chargement d’un fichier SARIF sur GitHub ».

Chargement de vos résultats dans GitHub Enterprise Cloud

Une fois que vous avez analysé votre code, produit des résultats SARIF et vérifié que vous pouvez vous authentifier avec GitHub Enterprise Cloud, vous pouvez télécharger les résultats vers GitHub Enterprise Cloud. Pour en savoir plus sur les différentes méthodes que vous pouvez utiliser pour télécharger vos résultats, reportez-vous à « Chargement d’un fichier SARIF sur GitHub ».

Pour en savoir plus sur le téléchargement de vos résultats vers GitHub Enterprise Cloud en utilisant CodeQL CLI, reportez-vous à « Chargement des résultats d'analyse de CodeQL sur GitHub ».

Par défaut, l’code scanning attend un fichier de résultats SARIF par analyse pour un dépôt. Ainsi, quand vous chargez un deuxième fichier de résultats SARIF pour un commit, il est traité comme un remplacement du jeu de données d’origine. Vous pouvez télécharger deux fichiers SARIF différents pour une même analyse si, par exemple, votre outil d'analyse génère un fichier SARIF différent pour chaque langue qu'il analyse ou chaque ensemble de règles qu'il utilise. Si vous souhaitez télécharger plusieurs jeux de résultats pour un commit dans un référentiel, vous devez identifier chaque jeu de résultats en tant que jeu unique. La manière de spécifier une catégorie pour un chargement SARIF varie selon la méthode d'analyse. Pour plus d’informations, consultez « Prise en charge de SARIF pour l’analyse du code ».