Skip to main content

Enterprise Server 3.21 est actuellement disponible en tant que version candidate.

À propos de l’analyse du code CodeQL pour les langages compilés

Découvrez comment CodeQL analyser les langages compilés, les options de génération disponibles et découvrir comment personnaliser le processus de génération de base de données si nécessaire.

Qui peut utiliser cette fonctionnalité ?

Utilisateurs avec accès en écriture if advanced setup is already enabled

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

  • Des référentiels publics sur GitHub.com
  • Référentiels appartenant à l’organisation sur GitHub Team, GitHub Enterprise Cloud, ou GitHub Enterprise Server, avec GitHub Code Security activé.

À propos des Workflow d’analyse CodeQL et des langues compilées

          Code scanning fonctionne en exécutant des requêtes sur une ou plusieurs CodeQL bases de données. Chaque base de données contient une représentation du code dans un seul langage au sein de votre dépôt. Pour les langages C/C++, C#, Go, Java, Kotlin, Rust, and Swiftcompilés, le processus de remplissage de cette base de données implique souvent la création du code et l’extraction de données.

Lorsque vous activez code scanning, la configuration par défaut et avancée génère une CodeQL base de données pour l’analyse à l’aide de la méthode la plus simple disponible. Pour C/C++, C#, Java et Rust, la CodeQL base de données est générée directement à partir du code source sans nécessiter de compilation (none mode de compilation). Pour d’autres langages compilés, CodeQL génère la base de code à l’aide du autobuild mode de génération. Vous pouvez également utiliser le mode de build manual pour spécifier des commandes de build explicites afin d’analyser uniquement les fichiers compilés par ces commandes personnalisées.

Vous pouvez utiliser la mise en cache des dépendances avec CodeQL pour stocker les dépendances en tant que cache GitHub Actions au lieu de les télécharger à partir de registres. Pour plus d’informations sur la mise en cache des dépendances CodeQL , consultez cet article.

CodeQL modes de compilation

L’action CodeQL prend en charge trois modes de génération différents pour les langages compilés :

  • none - la CodeQL base de données est créée directement à partir de la base de code sans générer la base de code (prise en charge pour tous les langages interprétés, et prise en charge pour C/C++, C#, Java et Rust).
  • autobuild - CodeQL détecte la méthode de génération la plus probable et utilise cette méthode pour tenter de générer le codebase et de créer une base de données pour l’analyse (prise en charge pour C/C++, C#, Go, Java, Kotlin et Swift).
  • manual - vous définissez les étapes de génération à utiliser pour le codebase dans le flux de travail (pris en charge pour C/C++, C#, Go, Java, Kotlin et Swift).

Pour connaître le comportement spécifique de chaque langage pour autobuild, les exigences de l’exécuteur et les instructions pour les builds manuelles, consultez Options et étapes de génération CodeQL pour les langages compilés.

À propos de la mise en cache des dépendances pour CodeQL

Vous pouvez utiliser la mise en cache des dépendances avec CodeQL pour stocker les dépendances en tant qu'un GitHub Actions cache au lieu de les télécharger à partir de registres. Cela réduit le risque de perdre des alertes lorsque les registres tiers fonctionnent mal, et peut améliorer les performances des projets ayant un grand nombre de dépendances ou utilisant des registres lents. Pour en savoir plus sur la façon dont la mise en cache des dépendances peut accélérer les workflows, consultez Référence sur la mise en cache des dépendances.

La mise en cache des dépendances fonctionne avec tous les modes de génération et est prise en charge par Java, Go, et C#.

Remarque

Utiliser le caching des dépendances stockera des caches spécifiques à CodeQL qui seront soumis aux quotas de cache d'un référentiel. Consultez « Référence sur la mise en cache des dépendances ».