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é ?

GitHub CodeQL est concédé sous licence par utilisateur lors de l’installation. Vous pouvez utiliser CodeQL uniquement pour certaines tâches soumises aux restrictions de licence. Pour plus d’informations, consultez « À propos de CodeQL CLI ».

Si vous disposez d’une licence GitHub Advanced Security, vous pouvez utiliser CodeQL pour l’analyse automatisée, l’intégration continue et la livraison continue. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».

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