Remarque : Cet article a été migré à partir du site web de documentation CodeQL en janvier 2023.
À propos des requêtes personnalisées et de CodeQL CLI
Vous pouvez personnaliser vos analyses CodeQL en écrivant vos propres requêtes pour mettre en évidence des vulnérabilités ou des erreurs spécifiques.
Cette rubrique concerne spécifiquement l’écriture de requêtes à utiliser avec la commande database analyze pour produire des résultats interprétés.
Remarque : Les requêtes exécutées avec database analyze
ont des exigences de métadonnées strictes. Vous pouvez également exécuter des requêtes à l’aide des sous-commandes de niveau plomberie suivantes :
- database run-queries, qui génère des résultats non interprétés dans un format binaire intermédiaire appelé BQRS.
- query run, qui génère des fichiers BQRS ou affiche les tables de résultats directement dans la ligne de commande. L’affichage des résultats directement dans la ligne de commande peut être utile pour le développement de requêtes itératives à l’aide de l’interface CLI.
Les requêtes exécutées avec ces commandes n’ont pas les mêmes exigences de métadonnées. Toutefois, pour enregistrer des données lisibles par l’homme, vous devez traiter chaque fichier de résultats BQRS avec la sous-commande de plomberie bqrs decode. Par conséquent, dans la plupart des cas d’usage, il est plus simple d’utiliser l’analyse de base de données (database analyze) pour générer directement des résultats interprétés.
Écriture d’une requête valide
Avant d’exécuter une analyse personnalisée, vous devez écrire une requête valide et l’enregistrer dans un fichier avec une extension .ql
. Une documentation complète est disponible pour vous aider à écrire des requêtes. Pour plus d’informations, consultez « Requêtes CodeQL ».
Inclusion des métadonnées de requête
Les métadonnées de requête sont incluses en haut de chaque fichier de requête. Elles fournissent aux utilisateurs des informations sur la requête et indique à CodeQL CLI comment traiter les résultats de la requête.
Lors de l’exécution de requêtes avec la commande database analyze
, vous devez inclure les deux propriétés suivantes pour garantir que les résultats sont interprétés correctement :
-
Identificateur de requête (
@id
) : séquence de mots composés de lettres minuscules ou de chiffres, délimités par/
ou par-
, identifiant et classifiant la requête. -
Type de requête (
@kind
) : identifie la requête comme une alerte simple (@kind problem
), une alerte documentée par une séquence d’emplacements de code (@kind path-problem
), pour la résolution des problèmes de l’extracteur (@kind diagnostic
) ou une métrique récapitulative (@kind metric
et@tags summary
).
Pour plus d’informations sur ces propriétés de métadonnées, consultez « Métadonnées pour les requêtes CodeQL » et Guide de style pour les métadonnées de requête.
Remarque : Les exigences en matière de métadonnées peuvent différer si vous voulez utiliser votre requête avec d’autres applications. Pour plus d’informations, consultez « Métadonnées pour les requêtes CodeQL ».
Contribution au dépôt CodeQL
Si vous voulez partager votre requête avec d’autres utilisateurs CodeQL, vous pouvez ouvrir une demande de tirage dans le dépôt CodeQL. Pour plus d’informations, consultez Contribution à CodeQL.
Pour aller plus loin
- « Requêtes CodeQL »