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 query run (--database=<database> | --dataset=<dataset>) [--output=<file.bqrs>] [--threads=<num>] [--ram=<MB>] <options>... -- <file.ql>
codeql query run (--database=<database> | --dataset=<dataset>) [--output=<file.bqrs>] [--threads=<num>] [--ram=<MB>] <options>... -- <file.ql>
Description
ExĂ©cute une seule requĂȘte.
Cette commande exĂ©cute une seule requĂȘte sur une base de donnĂ©es CodeQL ou un jeu de donnĂ©es QL brut.
Par dĂ©faut, le rĂ©sultat de la requĂȘte sâaffiche sur le terminal dans un rendu agrĂ©able Ă lâĆil. Si vous souhaitez traiter les rĂ©sultats de façon plus approfondie, nous vous recommandons vivement dâutiliser lâoption --output
pour Ă©crire les rĂ©sultats dans un fichier dans un format binaire intermĂ©diaire, qui peut ensuite ĂȘtre dĂ©compressĂ© dans diffĂ©rentes reprĂ©sentations plus conviviales pour lâordinateur par codeql bqrs decode.
Si votre requĂȘte produit des rĂ©sultats sous une forme qui peut ĂȘtre interprĂ©tĂ©e comme des alertes de code source, vous trouverez peut-ĂȘtre codeql database analyze plus pratique pour lâexĂ©cuter. En particulier, codeql database analyze peut produire une sortie au format SARIF, qui peut ĂȘtre utilisĂ©e avec diverses visionneuses dâalerte.
Pour exĂ©cuter plusieurs requĂȘtes en parallĂšle, consultez codeql database run-queries.
Options
Options principales
<file.ql>
[Obligatoire] Source QL de la requĂȘte Ă exĂ©cuter.
-o, --output=<file.bqrs>
Fichier oĂč la sortie de la requĂȘte sera Ă©crite au format BQRS.
Options pour sélectionner les éléments à interroger
Exactement lâune de ces options doit ĂȘtre donnĂ©e.
-d, --database=<database>
Chemin dâune base de donnĂ©es CodeQL Ă interroger.
--dataset=<dataset>
[AvancĂ©] Chemin dâun jeu de donnĂ©es QL brut Ă interroger.
Options pour contrĂŽler lâĂ©valuateur de requĂȘte
--[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Ă©).
--[no-]save-cache
[AvancĂ©] Ăcrit de maniĂšre agressive des rĂ©sultats intermĂ©diaires dans le cache de disque. Cela prend plus de temps et utilise (beaucoup) plus dâespace disque, mais peut accĂ©lĂ©rer lâexĂ©cution ultĂ©rieure de requĂȘtes similaires.
--[no-]expect-discarded-cache
[AvancĂ©] Prend des dĂ©cisions sur les prĂ©dicats Ă Ă©valuer et sur ce quâil faut Ă©crire dans le cache de disque, en supposant que le cache soit ignorĂ© une fois les requĂȘtes exĂ©cutĂ©es.
--[no-]keep-full-cache
[AvancĂ©] Ne nettoie pas le cache de disque une fois lâĂ©valuation terminĂ©e. Cela peut faire gagner du temps si vous ĂȘtes amenĂ© Ă exĂ©cuter codeql dataset cleanup ou codeql database cleanup par la suite.
--max-disk-cache=<MB>
DĂ©finit la quantitĂ© maximale dâespace que le cache de disque peut utiliser pour les rĂ©sultats de requĂȘte intermĂ©diaires.
Si cette taille nâest pas configurĂ©e explicitement, lâĂ©valuateur essaie dâutiliser une quantitĂ© « raisonnable » dâespace de cache en fonction de la taille du jeu de donnĂ©es et de la complexitĂ© des requĂȘtes. La dĂ©finition explicite dâune limite supĂ©rieure Ă cette utilisation par dĂ©faut permet une mise en cache supplĂ©mentaire qui peut accĂ©lĂ©rer les requĂȘtes ultĂ©rieures.
--min-disk-free=<MB>
[AvancĂ©] DĂ©finit la quantitĂ© cible dâespace disponible sur le systĂšme de fichiers.
Si --max-disk-cache
nâest pas donnĂ©, lâĂ©valuateur sâefforce de limiter lâutilisation du cache de disque si lâespace disponible sur le systĂšme de fichiers passe en dessous de cette valeur.
--min-disk-free-pct=<pct>
[AvancĂ©] DĂ©finit la fraction cible dâespace disponible sur le systĂšme de fichiers.
Si --max-disk-cache
nâest pas donnĂ©, lâĂ©valuateur sâefforce de limiter lâutilisation du cache de disque si lâespace disponible sur le systĂšme de fichiers passe en dessous de ce pourcentage.
--external=<pred>=<file.csv>
Fichier CSV qui contient des lignes pour le prédicat <pred> externe.
Vous pouvez fournir plusieurs options --external
.
--xterm-progress=<mode>
[AvancĂ©] ContrĂŽle sâil faut afficher le suivi de la progression pendant lâĂ©valuation du code QL avec des sĂ©quences de contrĂŽle xterm. Les valeurs possibles sont les suivantes :
no
: ne produit jamais de progression fantaisiste ; suppose quâil sâagit dâun terminal idiot.
auto
(par dĂ©faut) : dĂ©termine automatiquement si la commande sâexĂ©cute dans un terminal appropriĂ©.
yes
: suppose que le terminal peut comprendre les sĂ©quences de contrĂŽle xterm. La fonctionnalitĂ© dĂ©pend toujours de la capacitĂ© Ă dĂ©tecter automatiquement la taille du terminal (ce qui nâest pas implĂ©mentĂ© sous Windows, dĂ©solĂ©), et sera Ă©galement dĂ©sactivĂ©e si -q
est spécifié.
25x80
(ou similaire) : comme yes
, et donne aussi explicitement la taille du terminal. (Contrairement Ă yes
, cela devrait fonctionner sous Windows.)
25x80:/dev/pts/17
(ou similaire) : affiche une progression fantaisiste sur un terminal différent de stderr. Principalement utile pour les tests internes.
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 contrĂŽler lâutilisation de la RAM
-M, --ram=<MB>
L'Ă©valuateur de requĂȘtes s'efforcera de maintenir son empreinte mĂ©moire totale en dessous de cette valeur. (Toutefois, pour les grandes bases de donnĂ©es, il est possible que le seuil soit dĂ©passĂ© par les cartes mĂ©moire sauvegardĂ©es sur fichier, qui peuvent ĂȘtre basculĂ©es sur disque en cas de sollicitation de la mĂ©moire).
La valeur doit ĂȘtre d'au moins 2048 Mo ; les valeurs infĂ©rieures seront arrondies de maniĂšre transparente.
Options pour contrĂŽler la compilation QL
--warnings=<mode>
Comment gérer les avertissements du compilateur QL. Valeurs possibles :
hide
: Supprime les avertissements.
show
(par défaut) : Affiche les avertissements, mais poursuit la compilation.
error
: Traite les avertissements comme des erreurs.
--no-debug-info
NâĂ©met pas dâinformations dâemplacement source dans RA pour le dĂ©bogage.
--[no-]fast-compilation
[DĂ©prĂ©ciĂ©] [AvancĂ©] Omet les Ă©tapes dâoptimisation particuliĂšrement lentes.
--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
.
--[no-]local-checking
Effectue uniquement les vérifications initiales sur la partie de la source QL utilisée.
--no-metadata-verification
Ne vĂ©rifie pas les mĂ©tadonnĂ©es de requĂȘte incorporĂ©es dans les commentaires QLDoc Ă des fins de validitĂ©.
--compilation-cache-size=<MB>
[AvancĂ©] Remplace la taille maximale par dĂ©faut dâun rĂ©pertoire de cache de compilation.
--fail-on-ambiguous-relation-name
[AvancĂ©] Ăchec de la compilation si un nom de relation ambigu est gĂ©nĂ©rĂ© pendant la compilation.
Options pour configurer lâenvironnement de compilation
--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 de contrĂŽle des packs d'extension
--model-packs=<
name@range>...
Une liste de noms de packs CodeQL, chacun avec une plage de versions optionnelle, Ă utiliser comme packs de modĂšles pour personnaliser les requĂȘtes qui sont sur le point d'ĂȘtre Ă©valuĂ©es.
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
.