Skip to main content

query compile

Compile ou vérifie le code QL.

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 query compile [--check-only] [--keep-going] [--threads=<num>] [--ram=<MB>] <options>... -- <file>...

Description

Compile ou vérifie le code QL.

Compile une ou plusieurs requĂȘtes. Le but principal de cette commande est gĂ©nĂ©ralement d’écrire la version compilĂ©e de la requĂȘte dans un cache de compilation oĂč elle pourra ĂȘtre trouvĂ©e lorsque la requĂȘte sera exĂ©cutĂ©e par la suite. Les autres options de sortie sont principalement pour le dĂ©bogage.

Options

Options principales

<file>...

[Obligatoire] RequĂȘtes Ă  compiler. Chaque argument est l’un des Ă©lĂ©ments suivants :

  • Un fichier .ql Ă  compiler.
  • Un rĂ©pertoire dans lequel les fichiers .ql seront recherchĂ©s de façon rĂ©cursive.
  • Un fichier .qls qui dĂ©finit un ensemble particulier de requĂȘtes.
  • Le nom de base d’un fichier .qls « connu Â» exportĂ© par l’un des packs QL installĂ©s.

-n, --check-only

VĂ©rifie juste que le QL est valide et affiche les erreurs le cas Ă©chĂ©ant ; n’optimise ni ne stocke de plan de requĂȘte. Peut ĂȘtre beaucoup plus rapide qu’une compilation complĂšte.

--[no-]precompile

[AvancĂ©] Enregistre chaque requĂȘte compilĂ©e sous la forme d’un fichier .qlx binaire Ă  cĂŽtĂ© de la source .ql.

Cette option est censĂ©e ĂȘtre utilisĂ©e uniquement lors de la prĂ©paration d’un pack de requĂȘtes pour la distribution (auquel cas elle est utilisĂ©e automatiquement par codeql pack publish). Une fois que les fichiers .qlx existent, les commandes qui exĂ©cutent par la suite des requĂȘtes peuvent ignorer les modifications de la source QL au profit de la version prĂ©compilĂ©e.

Certaines options de compilation rarement utilisĂ©es ne sont pas compatibles avec cela et entraĂźnent une erreur d’exĂ©cution.

Disponible depuis v2.12.0.

--[no-]dump-dil

[Avancé] Affiche la représentation intermédiaire DIL optimisée dans la sortie standard lors de la compilation.

Lorsque la sortie JSON est sĂ©lectionnĂ©e, le DIL est reprĂ©sentĂ© sous la forme d’un tableau de chaĂźnes Ă  une seule ligne, avec des wrappings pour identifier la requĂȘte en cours de compilation.

-k, --[no-]keep-going

Continue la compilation mĂȘme si une erreur est trouvĂ©e.

--[no-]dump-ra

[AvancĂ©] Affiche le plan de requĂȘte RA optimisĂ© dans la sortie standard lors de la compilation.

Lorsque la sortie JSON est sĂ©lectionnĂ©e, le RA est reprĂ©sentĂ© sous la forme d’un tableau de chaĂźnes Ă  une seule ligne, avec des wrappings pour identifier la requĂȘte en cours de compilation.

--format=<fmt>

Sélectionne le format de sortie text (par défaut) ou json.

-j, --threads=<num>

Utilise le nombre de threads spĂ©cifiĂ© pour compiler 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Ă©).

-M, --ram=<MB>

DĂ©finit la quantitĂ© totale de RAM que le compilateur doit ĂȘtre autorisĂ© Ă  utiliser.

Options de contrĂŽle du compilateur et du variant 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.