Remarque
Ce contenu dĂ©crit la version la plus rĂ©cente de CodeQL CLI. Pour plus dâinformations sur cette version, consultez https://github.com/github/codeql-cli-binaries/releases.
Pour voir les dĂ©tails des options disponibles pour cette commande dans une version antĂ©rieure, exĂ©cutez la commande avec lâoption --help
dans votre terminal.
Synopsis
codeql test run [--threads=<num>] [--ram=<MB>] <options>... -- <test|dir>...
codeql test run [--threads=<num>] [--ram=<MB>] <options>... -- <test|dir>...
Description
ExĂ©cute des tests unitaires pour les requĂȘtes QL.
Options
Options principales
<test|dir>...
Chaque argument est lâun des Ă©lĂ©ments suivants :
- Fichier
.ql
ou.qlref
qui définit un test à exécuter. - Répertoire dans lequel les tests à exécuter sont recherchés de façon récursive.
--failing-exitcode=<code>
[AvancĂ©] DĂ©finit le code de sortie Ă produire en cas dâĂ©chec. GĂ©nĂ©ralement 1, mais les outils qui analysent la sortie peuvent trouver utile de la dĂ©finir sur 0.
--format=<fmt>
Sélectionne le format de sortie. Choix possibles :
text
(par dĂ©faut) : Rendu textuel lisible par les ĂȘtres humains.
json
: tableau JSON des objets de résultat de test diffusé en continu.
betterjson
: tableau JSON des objets dâĂ©vĂ©nements diffusĂ© en continu.
jsonz
: flux dâobjets de rĂ©sultat de test JSON se terminant par zĂ©ro.
betterjsonz
: flux dâobjets dâĂ©vĂ©nements JSON se terminant par zĂ©ro.
Pour les formats betterjson
et betterjsonz
, chaque événement a une propriété type
spĂ©cifiant le type de lâĂ©vĂ©nement. De nouveaux types dâĂ©vĂ©nements peuvent ĂȘtre ajoutĂ©s Ă lâavenir. Les consommateurs doivent donc ignorer tout Ă©vĂ©nement avec une propriĂ©tĂ© kind
non reconnue.
--[no-]keep-databases
[AvancĂ©] Conserve les bases de donnĂ©es extraites pour exĂ©cuter les requĂȘtes de test, mĂȘme si tous les tests dâun rĂ©pertoire rĂ©ussissent. (La base de donnĂ©es reste toujours prĂ©sente quand des tests Ă©chouent.)
--[no-]fast-compilation
[DĂ©prĂ©ciĂ©] [AvancĂ©] Omet les Ă©tapes dâoptimisation particuliĂšrement lentes lors de la compilation des requĂȘtes de test.
--[no-]learn
[AvancĂ©] Lorsquâun test produit une sortie inattendue, au lieu de le mettre en Ă©chec, met Ă jour son fichier .expected
pour le faire correspondre Ă la sortie actuelle et ainsi le faire rĂ©ussir. Les tests peuvent quand mĂȘme Ă©chouer dans ce mode, par exemple si la crĂ©ation dâune base de donnĂ©es de test Ă interroger ne rĂ©ussit pas.
--consistency-queries=<dir>
[AvancĂ©] RĂ©pertoire avec des requĂȘtes de cohĂ©rence qui seront exĂ©cutĂ©es pour chaque base de donnĂ©es de test. Ces requĂȘtes ne doivent pas produire de sortie (sauf lorsquâelles rencontrent un problĂšme), sauf si le rĂ©pertoire de test inclut un sous-rĂ©pertoire CONSISTENCY
avec un fichier .expected
. Cette option est principalement utile pour tester les extracteurs.
--[no-]check-databases
[Avancé] Exécute codeql dataset check sur chaque base de données de test créée et signale un échec si elle détecte des incohérences. Cette option est utile lors du test des extracteurs. Si la vérification est (temporairement !) censée échouer pour une base de données en particulier, placez un fichier DB-CHECK.expected
dans le répertoire de test.
--[no-]show-extractor-output
[AvancĂ©] Affiche la sortie des scripts dâextracteur qui crĂ©ent les bases de donnĂ©es de test. Peut ĂȘtre utile lors du dĂ©veloppement ou de la modification de cas de test. Attention, cela peut gĂ©nĂ©rer une sortie dupliquĂ©e ou incorrecte si vous lâutilisez avec plusieurs threads !
-M, --ram=<MB>
DĂ©finit la quantitĂ© totale de RAM que lâexĂ©cuteur de test doit ĂȘtre autorisĂ© Ă utiliser.
--slice=<N/M>
[AvancĂ©] Divisez les cas de test en M tranches de taille Ă peu prĂšs Ă©gale et ne traitez que le Nth dâentre elles. Cela peut ĂȘtre utilisĂ© pour la parallĂ©lisation manuelle du processus de test.
--[no-]strict-test-discovery
[AvancĂ©] Utilise uniquement des requĂȘtes qui peuvent ĂȘtre fortement identifiĂ©es en tant que tests.
Ce mode tente de faire la distinction entre les fichiers .ql
qui définissent des tests unitaires et les fichiers .ql
destinĂ©s Ă ĂȘtre des requĂȘtes utiles. Cette option est utilisĂ©e par les outils, tels que les IDE, qui doivent identifier tous les tests unitaires dans une arborescence de rĂ©pertoires sans avoir besoin de savoir au prĂ©alable comment les fichiers y sont organisĂ©s.
Dans un pack QL dont qlpack.yml
déclare un répertoire tests
, tous les fichiers de ce répertoire sont considérés comme des tests, et les fichiers .ql
et .ql
en dehors de celui-ci sont ignorés. Dans un pack QL qui ne déclare pas de répertoire tests
, un fichier .ql
est identifiĂ© comme test uniquement sâil a un fichier .expected
correspondant.
à des fins de cohérence, les fichiers .qlref
sont limitĂ©s par les mĂȘmes rĂšgles que les fichiers .ql
, mĂȘme si un fichier .qlref
ne peut pas vraiment ĂȘtre un non-test.
Options pour rechercher les bibliothÚques et les extracteurs utilisés par les tests
--search-path=<dir>[:<dir>...]
Liste des rĂ©pertoires sous lesquels les packs QL peuvent ĂȘtre trouvĂ©s. Chaque rĂ©pertoire peut ĂȘtre un pack QL (ou un bundle de packs contenant un fichier .codeqlmanifest.json
Ă la racine) ou le parent immĂ©diat dâun ou plusieurs de ces rĂ©pertoires.
Si le chemin contient plusieurs rĂ©pertoires, leur ordre dĂ©finit la prioritĂ© entre eux : quand un nom de pack qui doit ĂȘtre rĂ©solu est mis en correspondance dans plusieurs arborescences de rĂ©pertoires, celle donnĂ©e en premier gagne.
Le pointage de ce chemin vers une extraction du dĂ©pĂŽt CodeQL open source devrait fonctionner lors de lâinterrogation dâun des langages qui y rĂ©sident.
Si vous avez extrait le dĂ©pĂŽt CodeQL en tant que frĂšre de la chaĂźne dâoutils CodeQL dĂ©compressĂ©e, vous nâavez pas besoin de donner cette option ; ces rĂ©pertoires frĂšres sont toujours recherchĂ©s pour les packs QL qui ne peuvent pas ĂȘtre trouvĂ©s autrement. (Si cette valeur par dĂ©faut ne fonctionne pas, il est fortement recommandĂ© de configurer --search-path
une fois pour toutes dans un fichier de configuration par utilisateur).
(Remarque : Sur Windows, le séparateur de chemin est ;
.)
--additional-packs=<dir>[:<dir>...]
Si cette liste de répertoires est donnée, des packs y sont recherchés avant ceux indiqués dans --search-path
. Lâordre entre eux nâa pas dâimportance ; il sâagit dâune erreur si un nom de pack est trouvĂ© dans deux rĂ©pertoires diffĂ©rents de cette liste.
Cette option est utile si vous dĂ©veloppez temporairement une nouvelle version dâun pack qui apparaĂźt aussi dans le chemin par dĂ©faut. En revanche, il nâest pas recommandĂ© de remplacer cette option dans un fichier de configuration ; certaines actions internes ajoutent cette option Ă la volĂ©e, remplaçant toute valeur configurĂ©e.
(Remarque : Sur Windows, le séparateur de chemin est ;
.)
--library-path=<dir>[:<dir>...]
[AvancĂ©] Liste facultative des rĂ©pertoires qui sont ajoutĂ©s au chemin de recherche dâimportation brut pour les bibliothĂšques QL. Doit ĂȘtre utilisĂ© seulement si vous utilisez des bibliothĂšques QL qui nâont pas Ă©tĂ© empaquetĂ©es en tant que packs QL.
(Remarque : Sur Windows, le séparateur de chemin est ;
.)
--dbscheme=<file>
[AvancĂ©] DĂ©finit explicitement les requĂȘtes de schĂ©ma de base de donnĂ©es Ă compiler. Ne doit ĂȘtre donnĂ© que par les appelants qui sont extrĂȘmement sĂ»rs de ce quâils font.
--compilation-cache=<dir>
[Avancé] Spécifie un répertoire supplémentaire à utiliser comme cache de compilation.
--no-default-compilation-cache
[AvancĂ©] Nâutilise pas de caches de compilation dans des emplacements standard, comme dans le pack QL contenant la requĂȘte ou dans le rĂ©pertoire de la chaĂźne dâoutils CodeQL.
Options pour configurer le gestionnaire de package CodeQL
--registries-auth-stdin
Permet de vous authentifier auprÚs des registres de conteneurs GitHub Enterprise Server en passant une liste de paires <registry_url>=<token> séparées par des virgules.
Par exemple, vous pouvez passer https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2
pour vous authentifier auprĂšs de deux instances GitHub Enterprise Server.
Cela remplace les variables dâenvironnement CODEQL_REGISTRIES_AUTH et GITHUB_TOKEN. Si vous avez seulement besoin de vous authentifier auprĂšs du registre de conteneurs github.com, vous pouvez vous authentifier en utilisant lâoption plus simple --github-auth-stdin
.
--github-auth-stdin
Permet de vous authentifier auprĂšs du registre de conteneurs github.com en passant un jeton github.com GitHub Apps ou un jeton dâaccĂšs personnel via une entrĂ©e standard.
Pour vous authentifier auprĂšs des registres de conteneurs GitHub Enterprise Server, passez --registries-auth-stdin
ou utilisez la variable dâenvironnement CODEQL_REGISTRIES_AUTH.
Cela remplace la variable dâenvironnement GITHUB_TOKEN.
Options pour contrĂŽler la compilation de requĂȘte
--no-release-compatibility
[Avancé] Utilise les fonctionnalités les plus récentes du compilateur, au détriment de la portabilité.
Parfois, les nouvelles fonctionnalitĂ©s du langage QL et les optimisations de lâĂ©valuateur sont prises en charge par lâĂ©valuateur QL quelques versions avant quâelles ne soient activĂ©es par dĂ©faut dans le compilateur QL. Cela permet de garantir que les performances dont vous bĂ©nĂ©ficiez lors du dĂ©veloppement de requĂȘtes dans la derniĂšre version de CodeQL peuvent ĂȘtre atteintes par des versions lĂ©gĂšrement plus anciennes qui peuvent encore ĂȘtre utilisĂ©es pour lâAnalyse du code ou les intĂ©grations CI.
Si la compatibilitĂ© de vos requĂȘtes avec dâautres versions (antĂ©rieures ou ultĂ©rieures) de CodeQL nâest pas un souci pour vous, vous pouvez parfois atteindre des performances un peu meilleures en utilisant cet indicateur pour activer les amĂ©liorations rĂ©centes du compilateur dĂšs le dĂ©but.
Dans les versions pour lesquelles il nây a pas dâamĂ©liorations rĂ©centes Ă activer, cette option ne fait rien. Par consĂ©quent, vous pouvez sans problĂšme la dĂ©finir une fois pour toutes dans votre fichier de configuration CodeQL global.
Disponible depuis v2.11.1
.
Options qui contrĂŽlent lâĂ©valuation des requĂȘtes de test
--[no-]tuple-counting
[AvancĂ©] Affiche le nombre de tuples pour chaque Ă©tape dâĂ©valuation dans les journaux de lâĂ©valuateur de requĂȘtes. Si lâoption --evaluator-log
est fournie, les nombres de tuples sont inclus dans les journaux JSON textuels et structurĂ©s gĂ©nĂ©rĂ©s par la commande. (Cela peut ĂȘtre utile pour lâoptimisation des performances du code QL complexe.)
--timeout=<seconds>
[AvancĂ©] DĂ©finit la durĂ©e du dĂ©lai dâexpiration pour lâĂ©valuation de la requĂȘte, en secondes.
La fonctionnalitĂ© de dĂ©lai dâexpiration est destinĂ©e Ă intercepter les cas oĂč lâĂ©valuation dâune requĂȘte complexe durerait « indĂ©finiment ». Il ne sâagit pas dâun moyen efficace de limiter la durĂ©e totale de lâĂ©valuation de la requĂȘte. LâĂ©valuation est autorisĂ©e Ă se poursuivre tant que chaque partie du calcul se termine dans le dĂ©lai dâexpiration qui lui a Ă©tĂ© imparti sĂ©parĂ©ment. Pour lâinstant, ces parties sont des « couches RA » de la requĂȘte optimisĂ©e, mais cela peut changer.
Si aucun dĂ©lai dâexpiration nâest spĂ©cifiĂ© ou que 0 est fourni, aucun dĂ©lai nâest dĂ©fini (sauf pour codeql test run, oĂč le dĂ©lai dâexpiration par dĂ©faut est de 5 minutes).
-j, --threads=<num>
Utilise le nombre de threads spĂ©cifiĂ© pour Ă©valuer les requĂȘtes.
La valeur par dĂ©faut est de 1. Vous pouvez passer 0 pour utiliser un thread par cĆur sur la machine ou -N pour laisser N cĆurs inutilisĂ©s (sauf si au moins un thread est toujours utilisĂ©).
Options pour contrĂŽler la sortie des journaux structurĂ©s de lâĂ©valuateur
--evaluator-log=<file>
[AvancĂ©] GĂ©nĂšre des journaux structurĂ©s sur les performances de lâĂ©valuateur dans le fichier donnĂ©. Le format de ce fichier journal est susceptible dâĂȘtre modifiĂ© sans prĂ©avis, mais il sâagit dâun flux dâobjets JSON sĂ©parĂ©s par deux caractĂšres de nouvelle ligne (par dĂ©faut) ou un seul si lâoption --evaluator-log-minify
est transmise. Utilisez codeql generate log-summary <file>
pour produire un rĂ©sumĂ© plus stable de ce fichier et Ă©vitez dâanalyser le fichier directement. Le fichier est remplacĂ©, sâil existe dĂ©jĂ .
--evaluator-log-minify
[AvancĂ©] Si lâoption --evaluator-log
est transmise, le passage de cette option rĂ©duit Ă©galement la taille du journal JSON produit, mais celui-ci devient beaucoup moins lisible par les ĂȘtres humains en contrepartie.
Options pour vérifier les fichiers TRAP importés
--[no-]check-undefined-labels
[Avancé] Signale les erreurs pour les étiquettes non définies.
--[no-]check-unused-labels
[Avancé] Signale les erreurs pour les étiquettes non utilisées.
--[no-]check-repeated-labels
[Avancé] Signale les erreurs pour les étiquettes répétées.
--[no-]check-redefined-labels
[Avancé] Signale les erreurs pour les étiquettes redéfinies.
--[no-]check-use-before-definition
[Avancé] Signale les erreurs pour les étiquettes utilisées avant leur définition.
--[no-]fail-on-trap-errors
[AvancĂ©] Sort une valeur non nulle si une erreur se produit lors de lâimportation dâun fichier TRAP.
--[no-]include-location-in-star
[AvancĂ©] Construit des ID dâentitĂ© qui encodent lâemplacement dans le fichier TRAP dont ils proviennent. Peut ĂȘtre utile pour le dĂ©bogage des gĂ©nĂ©rateurs TRAP, mais prend beaucoup dâespace dans le jeu de donnĂ©es.
--[no-]linkage-aware-import
[AvancĂ©] ContrĂŽle si lâimportation de jeu de donnĂ©es codeql prend en compte les liaisons (par dĂ©faut) ou non. Sur les projets dans lesquels cette partie de la crĂ©ation de base de donnĂ©es consomme trop de mĂ©moire, la dĂ©sactivation de cette option peut les aider Ă progresser au dĂ©triment de la complĂ©tion de la base de donnĂ©es.
Disponible depuis v2.15.3
.
Options courantes
-h, --help
Affiche ce texte dâaide.
-J=<opt>
[AvancĂ©] Donne une option Ă lâenvironnement JVM exĂ©cutant la commande.
(Attention, les options contenant des espaces ne sont pas gérées correctement.)
-v, --verbose
Augmente de façon incrémentielle le nombre de messages de progression affichés.
-q, --quiet
Diminue de façon incrémentielle le nombre de messages de progression affichés.
--verbosity=<level>
[Avancé] Définit explicitement le niveau de détail sur errors, warnings, progress, progress+, progress++ ou progress+++. Remplace -v
et -q
.
--logdir=<dir>
[AvancĂ©] Ăcrit des journaux dĂ©taillĂ©s dans un ou plusieurs fichiers du rĂ©pertoire donnĂ©, avec des noms gĂ©nĂ©rĂ©s qui incluent des horodatages et le nom de la sous-commande en cours dâexĂ©cution.
(Pour écrire un fichier journal avec un nom sur lequel vous avez un contrÎle total, donnez plutÎt --log-to-stderr
et redirigez stderr comme vous le souhaitez.)
--common-caches=<dir>
[AvancĂ©] ContrĂŽle lâemplacement des donnĂ©es en cache sur le disque qui persisteront entre plusieurs exĂ©cutions de lâinterface CLI, telles que les packs QL tĂ©lĂ©chargĂ©s et les plans de requĂȘte compilĂ©s. Sâil nâest pas dĂ©fini explicitement, il sâagit par dĂ©faut dâun rĂ©pertoire nommĂ© .codeql
dans le rĂ©pertoire de base de lâutilisateur. Sâil nâexiste pas dĂ©jĂ , il est créé.
Disponible depuis v2.15.2
.