Skip to main content

ExĂ©cution de requĂȘtes CodeQL

Vous pouvez exĂ©cuter des requĂȘtes sur des bases de donnĂ©es CodeQL et afficher les rĂ©sultats dans Visual Studio Code.

À 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

  1. Dans la barre latĂ©rale, ouvrez la vue « RequĂȘtes Â».

  2. 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.

Capture d’écran de la vue « RequĂȘtes Â», avec le bouton « ExĂ©cuter la requĂȘte locale Â» dĂ©crit en orange foncĂ©.

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.

  1. Dans la barre latĂ©rale, ouvrez la vue « RequĂȘtes Â».

  2. 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.

  1. Accédez à File Explorer.

  2. SĂ©lectionnez plusieurs fichiers ou dossiers qui contiennent des requĂȘtes.

  3. 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 :

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.

  1. Ouvrez un fichier de requĂȘte (.ql).

  2. Cliquez avec le bouton droit et sĂ©lectionnez CodeQL : exĂ©cutez la requĂȘte sur plusieurs bases de donnĂ©es.

  3. 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

  1. 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.

  2. 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.

  3. 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.

  1. Cliquez avec le bouton droit sur une requĂȘte dans la vue « Historique des requĂȘtes Â», puis sĂ©lectionnez Comparer les rĂ©sultats.

  2. Un menu SĂ©lection rapide affiche toutes les requĂȘtes valides Ă  comparer. SĂ©lectionnez une requĂȘte.

  3. 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.