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.

Qui peut utiliser cette fonctionnalité ?

Code scanning is available for the following repository types:

  • Public repositories on GitHub.com
  • Organization-owned repositories on GitHub Team, GitHub Enterprise Cloud, or GitHub Enterprise Server, with GitHub Code Security enabled.

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 permet de configurer rapidement l’analyse CodeQL pour code scanning sur votre dépôt. 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 « Configuration de la configuration par défaut pour l’analyse du code ».

  • Exécutez CodeQL CLI directement dans un système CI externe et chargez les résultats vers GitHub. Pour plus d’informations, consultez « Utilisation de l'analyse du code avec votre système CI existant ».

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

À propos de CodeQL

CodeQL est un langage de programmation et un ensemble d’outils associés qui traitent le code comme des données. Il a été conçu spécifiquement pour faciliter l’analyse du code et l’identification de vulnérabilités potentielles avec un niveau de confiance supérieur à celui des 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 s’affichent sous forme d’alertes code scanning dans GitHub lorsque vous utilisez CodeQL avec 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.

CodeQL prend en charge les langages suivants :

  • C/C++
  • C#
  • Go
  • Java/Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby
  • Rust
  • Workflows rapides * GitHub Actions

Remarque

  • Utilisez java-kotlin pour analyser le code écrit en Java, Kotlin ou les deux.
  • Utilisez javascript-typescript 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.

Important

CodeQL ne prend pas en charge les langages qui ne figurent pas dans la liste ci-dessus. Cela inclut, sans s’y limiter, PHP, Scala et d’autres. Toute tentative d’utilisation de CodeQL avec des langages non pris en charge peut entraîner l’absence d’alertes générées et une analyse incomplète.

Modélisation de frameworks personnalisés ou de niche

Des experts GitHub, des chercheurs en sécurité et des contributeurs de la communauté rédigent des bibliothèques pour modéliser les flux de données dans les frameworks et bibliothèques populaires. Si vous utilisez des dépendances personnalisées qui ne sont pas modélisées, vous pouvez utiliser l’extension CodeQL pour Visual Studio Code afin de créer des modèles pour ces dépendances et les exploiter pour étendre votre analyse. Pour plus d’informations, consultez « Utiliser l'éditeur de modèles CodeQL ».

Requêtes CodeQL

Des experts GitHub, des chercheurs en sécurité et des contributeurs de la communauté rédigent et maintiennent les requêtes CodeQL par défaut utilisées pour code scanning. Ces requêtes sont régulièrement mises à jour afin d’améliorer l’analyse et de réduire les faux positifs.

Rédiger vos propres requêtes

Les requêtes sont open source. Vous pouvez donc afficher et contribuer aux requêtes dans le référentiel github/codeql. Pour plus d’informations, consultez À propos des requêtes CodeQL dans la documentation CodeQL.

Exécution de requêtes supplémentaires

Si vous analysez votre code à l’aide d’une configuration avancée ou d’un système CI externe, vous pouvez exécuter des requêtes supplémentaires dans le cadre de votre analyse.

Ces requêtes doivent appartenir à un pack de requêtes CodeQL publié ou à un pack CodeQL présent dans un dépôt.

  • Lorsqu’un pack de requêtes CodeQL est publié dans le GitHub Container registry, toutes les dépendances transitives requises par les requêtes, ainsi qu’un cache de compilation, sont incluses 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 de requêtes CodeQL peuvent être téléchargés depuis plusieurs registres de conteneurs GitHub. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse de code ».

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