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