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