Skip to main content

Fichiers de rĂ©fĂ©rence de requĂȘte

Vous pouvez utiliser des fichiers de rĂ©fĂ©rence de requĂȘte pour dĂ©finir l’emplacement d’une requĂȘte que vous voulez exĂ©cuter dans des tests.

Qui peut utiliser cette fonctionnalité ?

CodeQL est disponible pour les types de rĂ©fĂ©rentiels suivants :

À propos des fichiers de rĂ©fĂ©rence de requĂȘte

Un fichier de rĂ©fĂ©rence de requĂȘte est un fichier texte qui dĂ©finit l’emplacement d’une seule requĂȘte Ă  tester.

Vous utilisez un fichier de rĂ©fĂ©rence de requĂȘte quand vous voulez indiquer Ă  la sous-commande test run d’exĂ©cuter une requĂȘte qui ne fait pas partie d’un rĂ©pertoire de test. Il existe deux façons de spĂ©cifier les requĂȘtes que vous voulez exĂ©cuter en tant que tests :

  1. Utilisez un fichier de rĂ©fĂ©rence de requĂȘte pour spĂ©cifier l’emplacement d’une requĂȘte Ă  tester. Un tel fichier s’avĂšre utile quand vous crĂ©ez des tests pour des requĂȘtes d’alerte et de chemin qui ont pour but d’identifier les problĂšmes dans des codebases rĂ©els. Vous pouvez crĂ©er plusieurs rĂ©pertoires de code de test, chacun se concentrant sur diffĂ©rents aspects de la requĂȘte. Ensuite, vous pouvez ajouter un fichier de rĂ©fĂ©rence de requĂȘte Ă  chaque rĂ©pertoire de code de test, pour spĂ©cifier la requĂȘte Ă  tester.
  2. Ajoutez la requĂȘte directement Ă  un rĂ©pertoire de tests. Cette approche s’avĂšre gĂ©nĂ©ralement utile quand vous Ă©crivez des requĂȘtes explicitement pour tester le comportement de bibliothĂšques QL. Souvent, ces requĂȘtes contiennent seulement quelques appels aux prĂ©dicats de bibliothĂšque, les encapsulant dans une instruction select afin que leur sortie puisse ĂȘtre testĂ©e.

DĂ©finition d’un fichier de rĂ©fĂ©rence de requĂȘte

Chaque fichier de rĂ©fĂ©rence de requĂȘte, .qlref, contient une seule ligne qui dĂ©finit oĂč trouver une seule requĂȘte. L’emplacement doit ĂȘtre dĂ©fini par rapport Ă  la racine du pack CodeQL qui contient la requĂȘte. En rĂšgle gĂ©nĂ©rale, il s’agit du pack CodeQL qui contient .qlref, un pack CodeQL spĂ©cifiĂ© dans le bloc dependencies pour le pack de tests ou une dĂ©pendance transitive du pack CodeQL.

Il est prĂ©fĂ©rable d’utiliser des barres obliques dans le chemin sur tous les systĂšmes d’exploitation pour garantir la compatibilitĂ© entre les systĂšmes.

Exemple

Fichier de rĂ©fĂ©rence de requĂȘte pour tester une requĂȘte d’alerte JavaScript : DeadAngularJSEventListener.qlref

Le fichier qlpack.yml, https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml, pour le pack CodeQL Ă  javascript/ql/test dĂ©finit codeql/javascript-queries comme une dĂ©pendance. Ainsi, le fichier de rĂ©fĂ©rence de requĂȘte dĂ©finit l’emplacement de la requĂȘte par rapport au pack CodeQL codeql/javascript-queries :

AngularJS/DeadAngularJSEventListener.ql

Pour obtenir un autre exemple, consultez Test de requĂȘtes personnalisĂ©es.