Skip to main content

resolve library-path

[Plomberie profonde] Détermine le chemin de la bibliothèque QL et le schéma de base de données pour une requête.

Qui peut utiliser cette fonctionnalité ?

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

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 resolve library-path (--query=<qlfile> | --dir=<dir> | --root-pack=<pkgname>) <options>...

Description

[Plomberie profonde] Détermine le chemin de la bibliothèque QL et le schéma de base de données pour une requête.

Détermine le chemin de la bibliothèque QL où une requête particulière doit être compilée. Ce calcul est implicite dans plusieurs sous-commandes qui peuvent avoir besoin de compiler des requêtes. Elle est exposée en tant que commande de plomberie distincte pour (a) aider à résoudre les problèmes et (b) fournir un point de départ pour modifier le chemin dans des cas extraordinaires où un contrôle précis est nécessaire.

La commande détecte également un langage et un schéma de base de données avec lesquels compiler une requête, car ceux-ci peuvent également dépendre de la détection automatique du langage d’une requête QL.

La commande est profondément interne et son comportement ou son existence peut changer sans trop faire de bruit à mesure que l’écosystème du langage QL évolue.

Options

Options principales

--[no-]find-extractors

[Avancé] Inclut dans la sortie un résumé des champs extractor des packs QL dont dépend la requête. Utilisée uniquement pour quelques cas internes rares, elle peut demander plus de travail pour le calcul, donc elle n’est pas activée par défaut.

--format=<fmt>

Sélectionne le format de sortie. Les options sont les suivantes :

lines (par défaut)  : Affiche les arguments de ligne de commmande sur une ligne chacun.

json : Affiche un objet JSON avec toutes les données.

path : Affiche juste le chemin de la bibliothèque calculée.

dbscheme : Affiche juste le schéma de base de données détecté.

cache : Affiche l’emplacement du cache de compilation par défaut, ou rien s’il n’y en a pas.

Options de la ligne de commande de la commande appelante

--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 spécifier ce que nous sommes sur le point de compiler

Exactement l’une de ces options doit être donnée.

--query=<qlfile>

Chemin du fichier QL que nous voulons compiler.

Son répertoire et les répertoires parents feront l’objet de recherches pour trouver les fichiers qlpack.yml ou les fichiers queries.xml hérités afin de déterminer les packs nécessaires.

--dir=<dir>

Répertoire racine du pack contenant les requêtes à compiler.

--root-pack=<pkgname>

[Avancé] Nom déclaré d’un pack à utiliser comme racine pour la résolution des dépendances.

Utilisé lorsque le pack peut être trouvé par nom quelque part dans le chemin de recherche. Si vous connaissez l’emplacement du disque de votre package racine souhaité, faites comme s’il contenait un fichier .ql et utilisez --query à la place.

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.