Skip to main content

database run-queries

[Plomberie] ExĂ©cute un jeu de requĂȘtes ensemble.

Qui peut utiliser cette fonctionnalité ?

CodeQL est disponible pour les types de rĂ©fĂ©rentiels suivants :

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

Shell
codeql database run-queries [--threads=<num>] [--ram=<MB>] <options>... -- <database> <query|dir|suite|pack>...

Description

[Plomberie] ExĂ©cute un jeu de requĂȘtes ensemble.

ExĂ©cute une ou plusieurs requĂȘtes sur une base de donnĂ©es CodeQL, en enregistrant les rĂ©sultats dans le sous-rĂ©pertoire de rĂ©sultats du rĂ©pertoire de la base de donnĂ©es.

Les rĂ©sultats peuvent ensuite ĂȘtre convertis dans des formats lisibles par codeql database interpret-results, ou requĂȘte-pour-requĂȘte par codeql bqrs decode ou codeql bqrs interpret.

Si vos requĂȘtes produisent 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 les exĂ©cuter. codeql database analyze combine codeql database run-queries avec codeql database interpret-results en une seule Ă©tape. En particulier, codeql database analyze peut produire une sortie au format SARIF, qui peut ĂȘtre utilisĂ©e avec diverses visionneuses d’alerte.

Sinon, si vous n’avez qu’une seule requĂȘte Ă  exĂ©cuter, vous prĂ©fĂ©rerez probablement codeql query run, qui peut afficher une sortie lisible par les ĂȘtres humains pour une inspection rapide des rĂ©sultats pendant le dĂ©bogage.

Options

Options principales

<database>

[Obligatoire] Chemin vers la base de données CodeQL à interroger.

<query|dir|suite|pack>...

RequĂȘtes Ă  exĂ©cuter. Chaque argument se prĂ©sente sous la forme scope/name@range:path oĂč :

  • scope/name est le nom qualifiĂ© d’un pack CodeQL.
  • range est une plage semver.
  • path est un chemin de systĂšme de fichiers.

Si scope/name est spĂ©cifiĂ©, range et path sont facultatifs. Un range manquant implique la derniĂšre version du pack spĂ©cifiĂ©. Un path manquant implique la suite de requĂȘtes par dĂ©faut du pack spĂ©cifiĂ©.

path peut ĂȘtre, au choix, un fichier de requĂȘte *.ql, un rĂ©pertoire contenant une ou plusieurs requĂȘtes ou un fichier de suite de requĂȘtes .qls. Si aucun nom de pack n’est spĂ©cifiĂ©, un path doit ĂȘtre fourni et sera interprĂ©tĂ© comme relatif au rĂ©pertoire de travail actuel du processus en cours.

Pour spĂ©cifier un path qui contient un littĂ©ral @ ou :, utilisez path: comme prĂ©fixe de l’argument, comme suit : path:directory/with:and@/chars.

Si scope/name et path sont spĂ©cifiĂ©s, path ne peut pas ĂȘtre absolu. Il est considĂ©rĂ© comme relatif Ă  la racine du pack CodeQL.

Si aucune requĂȘte n’est spĂ©cifiĂ©e, l’interface CLI dĂ©termine automatiquement un jeu appropriĂ© de requĂȘtes Ă  exĂ©cuter. En particulier, si un fichier de configuration d’Analyse du code a Ă©tĂ© spĂ©cifiĂ© au moment de la crĂ©ation de la base de donnĂ©es en utilisant --codescanning-config, les requĂȘtes de cette commande sont utilisĂ©es. Sinon, les requĂȘtes par dĂ©faut pour le langage en cours d’analyse sont utilisĂ©es.

--no-rerun

Omet l’évaluation des requĂȘtes qui semblent dĂ©jĂ  avoir un rĂ©sultat BQRS stockĂ© Ă  l’emplacement de la sortie.

--no-database-extension-packs

[AvancĂ©] Omettez les packs d’extension stockĂ©s dans la base de donnĂ©es lors de la crĂ©ation de la base de donnĂ©es, soit Ă  partir d’un fichier de configuration d’analyse du code, soit Ă  partir de fichiers d’extension stockĂ©s dans le rĂ©pertoire « extensions Â» de la base de code analysĂ©e.

--no-database-threat-models

[AvancĂ©] Omettez la configuration du modĂšle de risque stockĂ©e dans la base de donnĂ©es lors de la crĂ©ation d’une base de donnĂ©es Ă  partir d’un fichier de configuration d’analyse du code.

Options permettant de contrĂŽler les packs de modĂšles Ă  utiliser

--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 permettant de contrĂŽler les modĂšles de risque Ă  utiliser

--threat-model=<name>...

Liste des modÚles de risque à activer ou désactiver.

L’argument est le nom d’un modĂšle de risque, Ă©ventuellement prĂ©cĂ©dĂ© d’un « ! Â». Si aucun « ! Â» n’est prĂ©sent, le modĂšle de risque nommĂ© et tous ses descendants sont activĂ©s. Si un « ! Â» est prĂ©sent, le modĂšle de risque nommĂ© et tous ses descendants sont dĂ©sactivĂ©s.

Le modĂšle de risque « par dĂ©faut Â» est activĂ© par dĂ©faut, mais peut ĂȘtre dĂ©sactivĂ© en spĂ©cifiant « --threat-model !default Â».

Le modĂšle de risque « all Â» peut ĂȘtre utilisĂ© pour activer ou dĂ©sactiver tous les modĂšles de risque.

Les options -- modeles de risque sont traitĂ©es dans l’ordre. Par exemple, « --threat-model local --threat-model !environment Â» active tous les modĂšles de risque dans le groupe « local », Ă  l’exception du modĂšle de risque « environnement ».

Cette option a uniquement un effet pour les langages qui prennent en charge les modĂšles de risque.

Disponible depuis v2.15.3.

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