Ă propos de lâexĂ©cution des requĂȘtes CodeQL
Le référentiel github/codeql
contient un grand nombre dâexemples de requĂȘtes. Vous pouvez accĂ©der Ă toutes les requĂȘtes existantes dans votre espace de travail via la vue « RequĂȘtes ».
Prérequis
Pour analyser un codebase, vous exĂ©cutez des requĂȘtes sur une base de donnĂ©es CodeQL extraite du code, donc vous devrez sĂ©lectionner une base de donnĂ©es pour travailler avec lâextension. Vous pouvez sĂ©lectionner une base de donnĂ©es localement (Ă partir dâune archive ZIP ou dâun dossier nonarchivĂ©), Ă partir dâune URL publique ou de lâURL dâun projet sur GitHub.com. Pour plus dâinformations, consultez « Gestion de bases de donnĂ©es CodeQL ».
ExĂ©cution d'une requĂȘte unique
-
Dans la barre latĂ©rale, ouvrez la vue « RequĂȘtes ».
-
Pour exĂ©cuter une requĂȘte sur la base de donnĂ©es sĂ©lectionnĂ©e, passez sur la requĂȘte souhaitĂ©e, puis cliquez sur lâicĂŽne ExĂ©cuter la requĂȘte locale.
Lâextension CodeQL exĂ©cute la requĂȘte sur la base de donnĂ©es active et signale la progression dans le coin infĂ©rieur droit de lâapplication. Lorsque les rĂ©sultats sont prĂȘts, ils sont affichĂ©s dans la vue « RĂ©sultats de la requĂȘte » CodeQL.
Sâil existe des problĂšmes lors de lâexĂ©cution dâune requĂȘte, une notification sâaffiche dans le coin infĂ©rieur droit de lâapplication. En plus du message dâerreur, la notification inclut des dĂ©tails sur la façon de rĂ©soudre le problĂšme.
ExĂ©cution de toutes les requĂȘtes dans un rĂ©pertoire
Vous pouvez exĂ©cuter chaque requĂȘte dans un annuaire.
-
Dans la barre latĂ©rale, ouvrez la vue « RequĂȘtes ».
-
Pointez sur lâannuaire souhaitĂ© des requĂȘtes, puis cliquez sur lâicĂŽne ExĂ©cuter les requĂȘtes locales.
ExĂ©cution dâune sĂ©lection de requĂȘtes
Vous pouvez exĂ©cuter plusieurs requĂȘtes avec une seule commande.
-
Accédez à File Explorer.
-
SĂ©lectionnez plusieurs fichiers ou dossiers qui contiennent des requĂȘtes.
-
Cliquez avec le bouton droit et sĂ©lectionnez CodeQL : ExĂ©cuter des requĂȘtes dans les fichiers sĂ©lectionnĂ©s.
ExĂ©cution dâune requĂȘte sans configuration
Lorsque vous travaillez sur une nouvelle requĂȘte, vous pouvez ouvrir un onglet « RequĂȘte rapide » pour exĂ©cuter facilement votre code et afficher les rĂ©sultats, sans avoir Ă enregistrer un fichier .ql
dans votre espace de travail. SĂ©lectionnez CodeQL : RequĂȘte rapide Ă partir de VS Code Command Palette, puis pour exĂ©cuter la requĂȘte, utilisez CodeQL : ExĂ©cuter la requĂȘte sur la base de donnĂ©es sĂ©lectionnĂ©e.
Vous pouvez voir toutes les requĂȘtes rapides que vous avez exĂ©cutĂ©es dans la session active dans la vue « Historique des requĂȘtes ». Cliquez sur une entrĂ©e pour afficher le texte exact de la requĂȘte rapide qui a produit les rĂ©sultats. Pour plus dâinformations, consultez Afficher votre historique des requĂȘtes.
Une fois que vous ĂȘtes satisfait de votre requĂȘte rapide, vous devez lâenregistrer dans un pack CodeQL afin de pouvoir y accĂ©der ultĂ©rieurement. Pour plus dâinformations, consultez « Personnalisation de lâanalyse avec des packs CodeQL ».
ExĂ©cution dâune partie spĂ©cifique dâune requĂȘte ou dâune bibliothĂšque
Cela peut ĂȘtre utile si vous dĂ©boguez une requĂȘte ou une bibliothĂšque et que vous souhaitez localiser la partie qui est incorrecte.
Au lieu dâutiliser CodeQL : ExĂ©cuter la requĂȘte sur la base de donnĂ©es sĂ©lectionnĂ©e pour exĂ©cuter lâensemble de la requĂȘte (la clause de sĂ©lection et tous les prĂ©dicats de requĂȘte), vous pouvez utiliser CodeQL : Ăvaluation rapide pour exĂ©cuter une partie spĂ©cifique dâun fichier .ql
ou .qll
.
**CodeQL : lâĂ©valuation rapide ** Ă©value un extrait de code que vous avez sĂ©lectionnĂ©, au lieu de la requĂȘte entiĂšre, et affiche les rĂ©sultats de cette sĂ©lection dans la vue « RĂ©sultats ».
Les cibles possibles pour lâĂ©valuation rapide sont les suivantes :
-
SĂ©lection du nom dâune entitĂ© CodeQL (par ex. une [classe ou un prĂ©dicat](https://codeql.github.com/docs/ql-language-reference/predicates/#predicates)) pour Ă©valuer cette entitĂ©.
-
SĂ©lection dâune formule ou dâune expression avec des variables libres pour Ă©valuer cette formule ou expression.
Par exemple, dans lâextrait de code suivant, vous pouvez sĂ©lectionner le nom foo
du prédicat ou la formule s = "bar"
pour une évaluation rapide :
predicate foo(string s) { s = "bar" }
ExĂ©cution dâune requĂȘte sur plusieurs bases de donnĂ©es
Cela peut ĂȘtre utile si vous souhaitez tester votre requĂȘte sur plusieurs bases de code ou trouver une vulnĂ©rabilitĂ© dans plusieurs projets.
-
Ouvrez un fichier de requĂȘte (
.ql
). -
Cliquez avec le bouton droit et sĂ©lectionnez CodeQL : exĂ©cutez la requĂȘte sur plusieurs bases de donnĂ©es.
-
Dans le menu dĂ©roulant, sĂ©lectionnez la base de donnĂ©es sur lesquelles vous souhaitez exĂ©cuter la requĂȘte.
Affichage de lâhistorique des requĂȘtes
Pour afficher les requĂȘtes que vous avez exĂ©cutĂ©es dans la session active, ouvrez la vue « Historique des requĂȘtes ».
La vue « Historique des requĂȘtes » contient des informations, notamment la date et lâheure de lâexĂ©cution de la requĂȘte, le nom de la requĂȘte, la base de donnĂ©es sur laquelle elle a Ă©tĂ© exĂ©cutĂ©e et le temps nĂ©cessaire pour exĂ©cuter la requĂȘte :
-
Pour personnaliser les informations affichées, cliquez avec le bouton droit sur une entrée, puis sélectionnez Renommer.
-
Si vous le souhaitez, filtrez lâaffichage par langue Ă lâaide du sĂ©lecteur de langue. Pour plus dâinformations, consultez Filtrage des bases de donnĂ©es et des requĂȘtes par langage.
-
Cliquez sur une entrĂ©e pour afficher les rĂ©sultats correspondants, puis double-cliquez pour afficher la requĂȘte elle-mĂȘme dans lâĂ©diteur (ou cliquez avec le bouton droit et sĂ©lectionnez Afficher la requĂȘte).
-
Pour afficher le texte exact qui a produit les rĂ©sultats dâune entrĂ©e particuliĂšre, cliquez dessus avec le bouton droit et sĂ©lectionnez Afficher le texte de la requĂȘte. Cela peut diffĂ©rer de la requĂȘte dâaffichage, car le fichier de requĂȘte a peut-ĂȘtre Ă©tĂ© modifiĂ© depuis la derniĂšre exĂ©cution.
-
Pour supprimer les requĂȘtes de lâaffichage, sĂ©lectionnez toutes les requĂȘtes que vous souhaitez supprimer, puis cliquez avec le bouton droit et sĂ©lectionnez Supprimer.
Comprendre vos rĂ©sultats de requĂȘte
-
Cliquez sur une requĂȘte dans la vue « Historique des requĂȘtes » pour afficher ses rĂ©sultats dans la vue « RĂ©sultats ».
Remarque
Selon la requĂȘte, vous pouvez Ă©galement choisir diffĂ©rentes vues telles que CSV, Sortie SARIF dans lâinterface CLI de CodeQL ou DIL. Par exemple, pour afficher le format DIL, cliquez avec le bouton droit sur un rĂ©sultat et sĂ©lectionnez Afficher DIL. Les vues de sortie disponibles sont dĂ©terminĂ©es par le format et les mĂ©tadonnĂ©es de la requĂȘte. Pour plus dâinformations, consultez RequĂȘtes CodeQL.
-
Utilisez le menu dĂ©roulant dans la vue « RĂ©sultats » pour choisir les rĂ©sultats Ă afficher et dans quel formulaire les afficher, tels quâun message dâalerte mis en forme ou un tableau de rĂ©sultats bruts.
-
Pour trier les rĂ©sultats par les entrĂ©es dâune colonne particuliĂšre, cliquez sur lâen-tĂȘte de colonne.
Si un rĂ©sultat est liĂ© Ă un Ă©lĂ©ment de code source, vous pouvez cliquer dessus pour lâafficher dans la source.
Pour utiliser des fonctionnalitĂ©s de navigation de code standard dans le code source, vous pouvez cliquer avec le bouton droit sur un Ă©lĂ©ment et utiliser les commandes Atteindre la dĂ©finition ou AccĂ©der aux rĂ©fĂ©rences. Cette opĂ©ration exĂ©cute une requĂȘte CodeQL sur le fichier actif, ce qui peut prendre quelques secondes. Cette requĂȘte doit sâexĂ©cuter une fois pour chaque fichier. Par consĂ©quent, toutes les rĂ©fĂ©rences supplĂ©mentaires du mĂȘme fichier seront rapides.
Remarque
Si vous utilisez une base de donnĂ©es plus ancienne, les commandes de navigation de code telles que Atteindre la dĂ©finition et AccĂ©der aux rĂ©fĂ©rences peuvent ne pas fonctionner. Pour utiliser la navigation dans le code, essayez de dĂ©compresser la base de donnĂ©es et dâexĂ©cuter codeql database cleanup <database>
sur la base de donnĂ©es dĂ©compressĂ©e Ă lâaide des donnĂ©es CodeQL CLI. Ensuite, rajoutez la base de donnĂ©es Ă Visual Studio Code. Pour plus dâinformations, consultez « database cleanup ».
Comparer des rĂ©sultats de requĂȘtes
Lorsque vous Ă©crivez ou dĂ©boguez une requĂȘte, il est utile de voir comment vos modifications affectent les rĂ©sultats. Vous pouvez comparer deux ensembles de rĂ©sultats pour voir exactement ce qui a changĂ©. Pour comparer les rĂ©sultats, les deux requĂȘtes doivent ĂȘtre exĂ©cutĂ©es sur la mĂȘme base de donnĂ©es.
-
Cliquez avec le bouton droit sur une requĂȘte dans la vue « Historique des requĂȘtes », puis sĂ©lectionnez Comparer les rĂ©sultats.
-
Un menu SĂ©lection rapide affiche toutes les requĂȘtes valides Ă comparer. SĂ©lectionnez une requĂȘte.
-
La vue « Comparer » affiche les diffĂ©rences dans les rĂ©sultats des deux requĂȘtes.
Dépannage
Pour afficher les journaux dâactivitĂ© de lâexĂ©cution dâune requĂȘte particuliĂšre, cliquez avec le bouton droit sur la requĂȘte dans la vue « Historique des requĂȘtes », puis sĂ©lectionnez Afficher le journal des requĂȘtes. Si le fichier journal est trop volumineux pour que lâextension sâouvre dans VS Code, le fichier sâaffiche dans votre explorateur de fichiers afin de pouvoir lâouvrir avec un programme externe.
Pour plus dâinformations sur la compilation et lâexĂ©cution de requĂȘtes, ainsi que sur les mises Ă niveau de base de donnĂ©es, vĂ©rifiez le journal du serveur de requĂȘtes CodeQL. Pour plus dâinformations, consultez « AccĂšs aux journaux dâactivitĂ© ».
Par dĂ©faut, lâextension supprime les journaux aprĂšs chaque session dâespace de travail. Pour remplacer ce comportement, vous pouvez spĂ©cifier un rĂ©pertoire personnalisĂ© pour les journaux du serveur de requĂȘtes. Pour plus dâinformations, consultez « Personnaliser les paramĂštres ».
Vous pouvez utiliser la commande CodeQL : RedĂ©marrer le serveur de requĂȘtes pour redĂ©marrer le serveur de requĂȘtes. Cela redĂ©marre le serveur sans affecter votre historique de session CodeQL. Vous devrez probablement redĂ©marrer le serveur de requĂȘtes si vous apportez des modifications externes aux fichiers que lâextension utilise. Par exemple, rĂ©gĂ©nĂ©rer une base de donnĂ©es CodeQL ouverte dans VS Code. En plus des problĂšmes dans le journal, vous pouvez Ă©galement voir : erreurs dans la mise en surbrillance du code, totaux de rĂ©sultats incorrects ou notifications en double quâune requĂȘte exĂ©cute.
Ătapes suivantes
Vous pouvez Ă©ventuellement utiliser lâextension pour crĂ©er vos propres requĂȘtes personnalisĂ©es. Pour plus dâinformations, consultez « CrĂ©ation dâune requĂȘte personnalisĂ©e ».
Pour plus dâinformations sur lâexĂ©cution de lâanalyse Ă grande Ă©chelle sur de nombreuses bases de donnĂ©es CodeQL, consultez ExĂ©cution de requĂȘtes CodeQL Ă grande Ă©chelle avec lâanalyse de variantes multi-rĂ©fĂ©rentiels.