{"meta":{"title":"query compile","intro":"Compile ou vérifie le code QL.","product":"Sécurité et qualité du code","breadcrumbs":[{"href":"/fr/code-security","title":"Sécurité et qualité du code"},{"href":"/fr/code-security/reference","title":"Reference"},{"href":"/fr/code-security/reference/code-scanning","title":"Analyse du code"},{"href":"/fr/code-security/reference/code-scanning/codeql","title":"CodeQL"},{"href":"/fr/code-security/reference/code-scanning/codeql/codeql-cli-manual","title":"Manuel de l’interface CLI CodeQL"},{"href":"/fr/code-security/reference/code-scanning/codeql/codeql-cli-manual/query-compile","title":"query compile"}],"documentType":"article"},"body":"# query compile\n\nCompile ou vérifie le code QL.\n\n> \\[!NOTE]\n> 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>.\n>\n> Pour voir les détails des options disponibles pour cette commande dans une version antérieure, exécutez la commande avec l’option <span style=\"white-space: nowrap;\">`--help`</span> dans votre terminal.\n\n## Synopsis\n\n```shell copy\ncodeql query compile [--check-only] [--keep-going] [--threads=<num>] [--ram=<MB>] <options>... -- <file>...\n```\n\n## Descriptif\n\nCompile ou vérifie le code QL.\n\nCompile 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.\n\n## Options\n\n### Options principales\n\n#### `<file>...`\n\n```\n          \\[Obligatoire] Requêtes à compiler. Chaque argument est l’un des éléments suivants :\n```\n\n* Un fichier .ql à compiler.\n* Un répertoire dans lequel les fichiers .ql seront recherchés de façon récursive.\n* Un fichier .qls qui définit un ensemble particulier de requêtes.\n* Le nom de base d’un fichier .qls « connu » exporté par l’un des packs QL installés.\n\n#### `-n, --check-only`\n\nVé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.\n\n#### `--[no-]precompile`\n\n```\n          \\[Avancé] Enregistre chaque requête compilée sous la forme d’un fichier `.qlx` binaire à côté de la source `.ql`.\n```\n\nCette 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](/fr/code-security/reference/code-scanning/codeql/codeql-cli-manual/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.\n\nCertaines options de compilation rarement utilisées ne sont pas compatibles avec cela et entraînent une erreur d’exécution.\n\nDisponible depuis `v2.12.0`.\n\n#### `--[no-]dump-dil`\n\n```\n          \\[Avancé] Affiche la représentation intermédiaire DIL optimisée dans la sortie standard lors de la compilation.\n```\n\nLorsque 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.\n\n#### `-k, --[no-]keep-going`\n\nContinue la compilation même si une erreur est trouvée.\n\n#### `--[no-]dump-ra`\n\n```\n          \\[Avancé] Affiche le plan de requête RA optimisé dans la sortie standard lors de la compilation.\n```\n\nLorsque 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.\n\n#### `--format=<fmt>`\n\nSélectionne le format de sortie `text`*(par défaut)* ou `json`.\n\n#### `-j, --threads=<num>`\n\nUtilise le nombre de threads spécifié pour compiler les requêtes.\n\nLa 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é).\n\n#### `-M, --ram=<MB>`\n\nDéfinit la quantité totale de RAM que le compilateur doit être autorisé à utiliser.\n\n### Options de contrôle du compilateur et du variant QL\n\n#### `--warnings=<mode>`\n\nComment gérer les avertissements du compilateur QL. L'un des:\n\n```\n          `hide` : Supprimer les avertissements\n\n          `show`\n          _(par défaut)_  : affiche les avertissements, mais poursuit la compilation.\n\n          `error` : Considérer les avertissements comme des erreurs\n```\n\n#### `--no-debug-info`\n\nN’émet pas d’informations d’emplacement source dans RA pour le débogage.\n\n#### `--[no-]fast-compilation`\n\n```\n          \\[Déprécié] \\[Avancé] Omet les étapes d’optimisation particulièrement lentes.\n```\n\n#### `--no-release-compatibility`\n\n```\n          \\[Avancé] Utilise les fonctionnalités les plus récentes du compilateur, au détriment de la portabilité.\n```\n\nParfois, 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.\n\nSi 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.\n\nDans 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.\n\nDisponible depuis `v2.11.1`.\n\n#### `--[no-]local-checking`\n\nEffectue uniquement les vérifications initiales sur la partie de la source QL utilisée.\n\n#### `--no-metadata-verification`\n\nNe vérifie pas les métadonnées de requête incorporées dans les commentaires QLDoc à des fins de validité.\n\n#### `--compilation-cache-size=<MB>`\n\n```\n          \\[Avancé] Remplace la taille maximale par défaut d’un répertoire de cache de compilation.\n```\n\n#### `--fail-on-ambiguous-relation-name`\n\n```\n          \\[Avancé] Échec de la compilation si un nom de relation ambigu est généré pendant la compilation.\n```\n\n### Options pour configurer l’environnement de compilation\n\n#### `--search-path=<dir>[:<dir>...]`\n\nListe 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.\n\nSi 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.\n\nLe 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.\n\nSi 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).\n\n(Remarque : Sur Windows, le séparateur de chemin est `;`.)\n\n#### `--additional-packs=<dir>[:<dir>...]`\n\nSi 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.\n\nCette 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.\n\n(Remarque : Sur Windows, le séparateur de chemin est `;`.)\n\n#### `--library-path=<dir>[:<dir>...]`\n\n```\n          \\[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.\n```\n\n(Remarque : Sur Windows, le séparateur de chemin est `;`.)\n\n#### `--dbscheme=<file>`\n\n```\n          \\[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.\n```\n\n#### `--compilation-cache=<dir>`\n\n```\n          \\[Avancé] Spécifie un répertoire supplémentaire à utiliser comme cache de compilation.\n```\n\n#### `--no-default-compilation-cache`\n\n```\n          \\[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.\n```\n\n### Options pour configurer le gestionnaire de package CodeQL\n\n#### `--registries-auth-stdin`\n\nPermet 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.\n\nPar exemple, vous pouvez passer `https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2`\npour vous authentifier auprès de deux instances GitHub Enterprise Server.\n\nCela 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`.\n\n#### `--github-auth-stdin`\n\nPermet 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.\n\nPour vous authentifier auprès des registres de conteneurs GitHub Enterprise Server, passez `--registries-auth-stdin` ou utilisez la variable d’environnement CODEQL\\_REGISTRIES\\_AUTH.\n\nCela remplace la variable d’environnement GITHUB\\_TOKEN.\n\n### Options courantes\n\n#### `-h, --help`\n\nAffiche ce texte d’aide.\n\n#### `-J=<opt>`\n\n```\n          \\[Avancé] Donne une option à l’environnement JVM exécutant la commande.\n```\n\n(Attention, les options contenant des espaces ne sont pas gérées correctement.)\n\n#### `-v, --verbose`\n\nAugmente de façon incrémentielle le nombre de messages de progression affichés.\n\n#### `-q, --quiet`\n\nDiminue de façon incrémentielle le nombre de messages de progression affichés.\n\n#### `--verbosity=<level>`\n\n```\n          \\[Avancé] Définit explicitement le niveau de détail sur errors, warnings, progress, progress+, progress++ ou progress+++. Remplace `-v` et `-q`.\n```\n\n#### `--logdir=<dir>`\n\n```\n          \\[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.\n```\n\n(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.)\n\n#### `--common-caches=<dir>`\n\n```\n          \\[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 sera créé.\n```\n\nDisponible depuis `v2.15.2`."}