Skip to main content

À propos de l’analyse du code avec CodeQL

Vous pouvez utiliser CodeQL pour identifier les vulnérabilités et les erreurs dans votre code. Les résultats sont affichés sous la forme d’alertes d’code scanning dans GitHub.

Code scanning est disponible pour tous les dépôts publics sur GitHub.com. Code scanning est également disponible pour des dépôts privés appartenant à des organisations qui utilisent GitHub Enterprise Cloud et ont une licence pour GitHub Advanced Security. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».

À propos de l’code scanning avec CodeQL

CodeQL est le moteur d’analyse de code développé par GitHub pour automatiser les vérifications de sécurité. Vous pouvez analyser votre code à l’aide de CodeQL et afficher les résultats sous forme d’alertes d’code scanning.

Il existe trois façons principales d’utiliser l’analyse CodeQL pour l’code scanning :

  • Utilisez la configuration par défaut afin de configurer rapidement l’analyse CodeQL pour l’code scanning dans votre dépôt. La configuration par défaut choisit automatiquement les langages à analyser, la suite de requêtes à exécuter et les événements qui déclenchent les analyses. Si vous préférez, vous pouvez sélectionner manuellement la suite de requêtes à exécuter et les langues à analyser. Une fois que vous avez activé CodeQL, GitHub Actions effectue les exécutions de workflow pour analyser votre code. Pour plus d’informations, consultez « Définition de la configuration par défaut pour l’analyse du code ».

  • Utilisez la configuration avancée pour ajouter le workflow CodeQL à votre dépôt. Cela génère un fichier de workflow personnalisable qui utilise github/codeql-action pour exécuter CodeQL CLI. Pour plus d’informations, consultez « Définition de la configuration avancée pour l’analyse du code ».

  • Exécutez l’interface CLI CodeQL CLI directement dans un système CI externe et chargez les résultats sur GitHub. Pour plus d’informations, consultez « À propos de l’analyse du code CodeQL dans votre système d’intégration continue ».

Pour plus d’informations sur les alertes code scanning, consultez « À propos des alertes d’analyse du code ».

À propos de CodeQL

CodeQL traite le code comme les données, ce qui vous permet de détecter les vulnérabilités potentielles dans votre code avec une plus grande confiance que les analyseurs statiques traditionnels.

  1. Vous générez une base de données CodeQL pour représenter votre codebase.
  2. Ensuite, vous exécutez des requêtes CodeQL sur cette base de données pour identifier les problèmes dans le codebase.
  3. Les résultats des requêtes sont affichés sous la forme d’alertes d’code scanning dans GitHub quand vous utilisez CodeQL avec l’code scanning.

CodeQL prend en charge les langages compilés et interprétés, et peut trouver des vulnérabilités et des erreurs dans le code écrit dans les langages pris en charge.

  • C/C++
  • C#
  • Go
  • Java/Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby - Swift

Remarques:

  • L’analyse CodeQL pour Swift est en version bêta. Durant la version bêta, l’analyse de Swift est moins complète que l’analyse CodeQL des autres langages. En outre, Swift 5.8 n’est pas encore pris en charge.

  • L’analyse CodeQL pour Kotlin est actuellement en version bêta. Durant la version bêta, l’analyse de Kotlin est moins complète que l’analyse CodeQL des autres langages.

  • Utilisez java pour analyser le code écrit en Java, Kotlin ou les deux.

  • Utilisez javascript pour analyser le code écrit en JavaScript, TypeScript ou les deux.

Pour plus d’informations, consultez la documentation disponible sur le site web de CodeQL : « Langages et frameworks pris en charge ».

À propos des requêtes CodeQL

Les experts GitHub, les chercheurs en sécurité et les contributeurs de la communauté écrivent et gèrent les requêtes CodeQL par défaut utilisées pour l’code scanning. Les requêtes sont régulièrement mises à jour pour améliorer l’analyse et réduire les faux résultats positifs. Les requêtes étant open source, vous pouvez les voir et y contribuer dans le dépôt github/codeql. Pour plus d’informations, consultez CodeQL sur le site web CodeQL. Vous pouvez également écrire vos propres requêtes. Pour plus d’informations, consultez « À propos des requêtes CodeQL » dans la documentation CodeQL.

Si vous analysez votre code avec la configuration avancé ou un système CI externe, vous pouvez exécuter des requêtes supplémentaires dans le cadre de votre analyse. Ces requêtes doivent faire partie d’un pack de requêtes CodeQL (bêta) publié ou d’un pack CodeQL dans un dépôt. Les packs CodeQL (bêta) offrent les avantages suivants par rapport aux packs QL classiques :

  • Quand un pack de requêtes CodeQL (bêta) est publié sur le Container registry GitHub, toutes les dépendances transitives requises par les requêtes et un cache de compilation sont inclus dans le package. Cela améliore les performances et garantit que l’exécution des requêtes dans le pack donne systématiquement des résultats identiques jusqu’à ce que vous effectuiez une mise à niveau vers une nouvelle version du pack ou de l’interface CLI.
  • Les packs QL n’incluent pas de dépendances transitives. Les requêtes du pack peuvent donc dépendre uniquement des bibliothèques standard (c’est-à-dire des bibliothèques référencées par une instruction import LANGUAGE dans votre requête), ou des bibliothèques du même pack QL que la requête.
  • Vous pouvez télécharger les packs de requêtes CodeQL (bêta) à partir de plusieurs registres de conteneurs GitHub. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».

Pour plus d’informations, consultez « Personnalisation de l’analyse avec des packs CodeQL ».

Remarque : La fonctionnalité de gestion des packages CodeQL ainsi que les packs CodeQL sont en version bêta et peuvent être amenés à changer.