Skip to main content

database create

CrĂ©e une base de donnĂ©es CodeQL pour une arborescence source qui peut ĂȘtre analysĂ©e Ă  l’aide de l’un des produits CodeQL.

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 create [--language=<lang>[,<lang>...]] [--github-auth-stdin] [--github-url=<url>] [--source-root=<dir>] [--threads=<num>] [--ram=<MB>] [--command=<command>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>

Description

CrĂ©e une base de donnĂ©es CodeQL pour une arborescence source qui peut ĂȘtre analysĂ©e Ă  l’aide de l’un des produits CodeQL.

Options

Options principales

<database>

[Obligatoire] Chemin vers la base de données CodeQL à créer. Ce répertoire est créé et ne doit pas déjà exister (mais son parent oui).

Si l’option --db-cluster est donnĂ©e, il ne s’agit pas de la base de donnĂ©es elle-mĂȘme, mais d’un rĂ©pertoire qui contiendra les bases de donnĂ©es pour plusieurs langages gĂ©nĂ©rĂ©es Ă  partir de la mĂȘme racine source.

Il est important que ce rĂ©pertoire ne se trouve pas Ă  un emplacement avec lequel le processus de gĂ©nĂ©ration interfĂ©rera. Par exemple, le rĂ©pertoire target d’un projet Maven ne serait pas un choix appropriĂ©.

--[no-]overwrite

[AvancĂ©] Si la base de donnĂ©es existe dĂ©jĂ , elle la supprime et poursuit avec cette commande au lieu d’échouer. Si le rĂ©pertoire existe, mais qu’il ne ressemble pas Ă  une base de donnĂ©es, une erreur est levĂ©e.

--[no-]force-overwrite

[AvancĂ©] Si la base de donnĂ©es existe dĂ©jĂ , la supprimer mĂȘme si elle ne ressemble pas Ă  une base de donnĂ©es et poursuivre avec cette commande au lieu d’échouer. Cette option doit ĂȘtre utilisĂ©e avec prudence, car elle peut supprimer de maniĂšre rĂ©cursive l’intĂ©gralitĂ© du rĂ©pertoire de la base de donnĂ©es.

--codescanning-config=<file>

[AvancĂ©] Lit un fichier de configuration d’Analyse du code spĂ©cifiant les options de crĂ©ation des bases de donnĂ©es CodeQL et les requĂȘtes Ă  exĂ©cuter dans les Ă©tapes ultĂ©rieures. Pour plus d’informations sur le format de ce fichier de configuration, reportez-vous Ă  Personnalisation de votre configuration avancĂ©e pour l’analyse de code. Pour exĂ©cuter des requĂȘtes Ă  partir de ce fichier Ă  une Ă©tape ultĂ©rieure, appelez codeql database analyze sans aucune autre requĂȘte spĂ©cifiĂ©e.

--[no-]db-cluster

Au lieu de crĂ©er une base de donnĂ©es unique, crĂ©ez un « cluster » de bases de donnĂ©es pour diffĂ©rents langages, chacun d’eux Ă©tant un sous-rĂ©pertoire du rĂ©pertoire donnĂ© sur la ligne de commande.

-l, --language=<lang>[,<lang>...]

Langage utilisé pour analyser la nouvelle base de données.

Utilise codeql resolve languages pour obtenir la liste des extracteurs de langages enfichables trouvés sur le chemin de recherche.

Lorsque l’option --db-cluster est donnĂ©e, elle peut apparaĂźtre plusieurs fois, ou la valeur peut ĂȘtre une liste de langages sĂ©parĂ©s par des virgules.

Si cette option est omise et que la racine source en cours d’analyse est une extraction d’un dĂ©pĂŽt GitHub, l’interface CLI de CodeQL effectue un appel Ă  l’API GitHub pour tenter de dĂ©terminer automatiquement les langages Ă  analyser. Notez que pour pouvoir effectuer cette opĂ©ration, un jeton PAT GitHub doit ĂȘtre fourni dans la variable d’environnement GITHUB_TOKEN ou via une entrĂ©e standard en utilisant l’option --github-auth-stdin.

--build-mode=<mode>

Mode de génération qui sera utilisé pour créer la base de données.

Choisissez votre mode de gĂ©nĂ©ration en fonction de la langue que vous analysez :

none : la base de donnĂ©es est créée sans gĂ©nĂ©rer la racine source. Disponible pour C#, Java, JavaScript/TypeScript, Python et Ruby.

autobuild : la base de donnĂ©es est créée en tentant de gĂ©nĂ©rer automatiquement la racine source. Disponible pour C/C++, C#, Go, Java/Kotlin et Swift.

manual : la base de donnĂ©es est créée en crĂ©ant la racine source Ă  l’aide d’une commande de build spĂ©cifiĂ©e manuellement. Disponible pour C/C++, C#, Go, Java/Kotlin et Swift.

Lors de la crĂ©ation d’une base de donnĂ©es avec --command, il n’est pas nĂ©cessaire de spĂ©cifier « --build-mode manual Â».

Disponible depuis v2.16.4.

-s, --source-root=<dir>

[Par dĂ©faut : .] RĂ©pertoire du code source racine. Dans de nombreux cas, il s’agit de la racine de l’extraction. Les fichiers qu’il contient sont considĂ©rĂ©s comme les fichiers sources principaux de cette base de donnĂ©es. Dans certains formats de sortie, les fichiers sont rĂ©fĂ©rencĂ©s par leur chemin relatif Ă  partir de ce rĂ©pertoire.

-j, --threads=<num>

Utilise le nombre de threads spĂ©cifiĂ© pour l’opĂ©ration d’importation et le passe en tant qu’indicateur Ă  toute commande de build appelĂ©e.

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>

Utilise la quantitĂ© de mĂ©moire spĂ©cifiĂ©e pour l’opĂ©ration d’importation et la passe en tant qu’indicateur Ă  toute commande de build appelĂ©e.

-c, --command=<command>

Pour les langages compilĂ©s, commandes de build qui entraĂźneront l’appel du compilateur sur le code source Ă  analyser. Ces commandes seront exĂ©cutĂ©es dans un environnement d’instrumentation qui permet l’analyse du code gĂ©nĂ©rĂ© et (dans certains cas) des bibliothĂšques standard.

Si aucune commande de build n’est spĂ©cifiĂ©e, la commande tente de dĂ©terminer automatiquement comment gĂ©nĂ©rer l’arborescence source, en fonction de l’heuristique du pack de langage sĂ©lectionnĂ©.

Notez que certaines combinaisons de plusieurs langages nĂ©cessitent la spĂ©cification d’une commande de build explicite.

--no-cleanup

[Avancé] Supprime tout le nettoyage de la base de données aprÚs la finalisation. Utile à des fins de débogage.

--no-pre-finalize

[AvancĂ©] Ignore tout script de prĂ©-finalisation spĂ©cifiĂ© par l’extracteur CodeQL actif.

--[no-]skip-empty

[AvancĂ©] GĂ©nĂšre un avertissement au lieu d’échouer si une base de donnĂ©es est vide parce qu’aucun code source n’a Ă©tĂ© vu pendant la gĂ©nĂ©ration. La base de donnĂ©es vide reste non finalisĂ©e.

--[no-]linkage-aware-import

[AvancĂ©] ContrĂŽle si l’importation de jeu de donnĂ©es codeql prend en compte les liaisons (par dĂ©faut) ou non. Sur les projets dans lesquels cette partie de la crĂ©ation de base de donnĂ©es consomme trop de mĂ©moire, la dĂ©sactivation de cette option peut les aider Ă  progresser au dĂ©triment de la complĂ©tion de la base de donnĂ©es.

Disponible depuis v2.15.3.

Options de calcul de la ligne de base

--[no-]calculate-baseline

[AvancĂ©] Calcule les informations de ligne de base sur le code en cours d’analyse et les ajoute Ă  la base de donnĂ©es. Par dĂ©faut, cette option est activĂ©e, sauf si la racine source est la racine d’un systĂšme de fichiers. Cet indicateur peut ĂȘtre utilisĂ© pour dĂ©sactiver ou forcer l’activation du comportement, mĂȘme Ă  la racine du systĂšme de fichiers.

--[no-]sublanguage-file-coverage

[GitHub.com et GitHub Enterprise Server v3.12.0+ uniquement] Utilisez les informations de couverture des fichiers de sous-langage. Cela permet de calculer, d’afficher et d’exporter des informations de couverture de fichiers distinctes pour les langages qui partagent un extracteur CodeQL comme C et C++, Java et Kotlin, et JavaScript et TypeScript.

Disponible depuis v2.15.2.

Options de sĂ©lection de l’extracteur

--search-path=<dir>[:<dir>...]

Liste des rĂ©pertoires sous lesquels les packs d’extracteur peuvent ĂȘtre trouvĂ©s. Les rĂ©pertoires peuvent ĂȘtre les packs d’extracteur eux-mĂȘmes ou les rĂ©pertoires qui contiennent les extracteurs en tant que sous-rĂ©pertoires immĂ©diats.

Si le chemin contient plusieurs arborescences de rĂ©pertoires, leur ordre dĂ©finit la prioritĂ© entre elles : si le langage cible est mis en correspondance dans plusieurs arborescences de rĂ©pertoires, celle donnĂ©e en premier gagne.

Les extracteurs en bundle avec la chaĂźne d’outils CodeQL elle-mĂȘme sont toujours trouvĂ©s, mais si vous devez utiliser des extracteurs distribuĂ©s sĂ©parĂ©ment, vous devez donner cette option (ou, mieux encore, configurer --search-path dans un fichier de configuration par utilisateur).

(Remarque : Sur Windows, le sĂ©parateur de chemin est ;.)

Options pour configurer l’appel de l’API GitHub visant Ă  dĂ©tecter automatiquement les langages.

-a, --github-auth-stdin

Accepte un jeton GitHub Apps ou un jeton d’accĂšs personnel via une entrĂ©e standard.

Cela remplace la variable d’environnement GITHUB_TOKEN.

-g, --github-url=<url>

URL de l’instance GitHub Ă  utiliser. Si elle est omise, l’interface CLI tente de la dĂ©tecter automatiquement Ă  partir du chemin d’extraction et, si cela n’est pas possible, la valeur par dĂ©faut est https://github.com/

Options pour configurer le gestionnaire de package.

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

Options de nettoyage de jeu de données de bas niveau

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

--cache-cleanup=<mode>

SĂ©lectionnez le degrĂ© de rĂ©duction du cache. Les options sont les suivantes :

clear:  Supprime l’intĂ©gralitĂ© du cache, en le rĂ©duisant Ă  l’état d’un jeu de donnĂ©es qui vient d’ĂȘtre extrait

trim (par dĂ©faut)  : Supprime tout, sauf les prĂ©dicats explicitement « mis en cache Â».

fit : S’assure simplement que les limites de taille dĂ©finies pour le cache de disque sont respectĂ©es, en supprimant autant d’intermĂ©diaires que nĂ©cessaire.

overlay : conservez uniquement les donnĂ©es qui seront utiles lors de l’évaluation par rapport Ă  une superposition.

--cleanup-upgrade-backups

Supprime tous les répertoires de sauvegarde résultant des mises à niveau des bases de données.

Options de suivi

--no-tracing

[AvancĂ©] Ne trace pas la commande spĂ©cifiĂ©e, mais l’utilise pour produire directement toutes les donnĂ©es nĂ©cessaires.

--extra-tracing-config=<tracing-config.lua>

[AvancĂ©] Chemin du fichier de configuration d’un traceur. Il peut ĂȘtre utilisĂ© pour modifier le comportement du traceur de build. Il peut ĂȘtre utilisĂ© pour sĂ©lectionner les processus du compilateur qui s’exĂ©cutent dans le cadre de la commande de build et dĂ©clencher l’exĂ©cution d’autres outils. Les extracteurs fournissent des fichiers de configuration de traceur par dĂ©faut qui devraient fonctionner dans la plupart des cas.

Options de personnalisation des commandes de build

--working-dir=<dir>

[AvancĂ©] RĂ©pertoire dans lequel la commande spĂ©cifiĂ©e doit ĂȘtre exĂ©cutĂ©e. Si cet argument n’est pas fourni, la commande est exĂ©cutĂ©e dans la valeur de --source-root transmise Ă  codeql database create, si elle existe. Si aucun argument --source-root n’est fourni, la commande est exĂ©cutĂ©e dans le rĂ©pertoire de travail actif.

--no-run-unnecessary-builds

[AvancĂ©] ExĂ©cute la ou les commandes de build spĂ©cifiĂ©es seulement si une base de donnĂ©es en cours de construction utilise un extracteur qui dĂ©pend du traçage d’un processus de build. Si cette option n’est pas donnĂ©e, la commande est exĂ©cutĂ©e mĂȘme si CodeQL n’en a pas besoin, en supposant que vous ayez besoin de ses effets secondaires pour d’autres raisons.

Options pour contrĂŽler le comportement des extracteurs

-O, --extractor-option=<extractor-option-name=value>

DĂ©finit les options pour les extracteurs CodeQL. extractor-option-name doit ĂȘtre de la forme extracteur_nom.groupe1.groupe2.option_nom ou groupe1.groupe2.option_nom. Si extractor_option_name commence par un nom d’extracteur, l’extracteur indiquĂ© doit dĂ©clarer l’option groupe1.groupe2.option_nom. Sinon, tout extracteur qui dĂ©clare l’option groupe1.groupe2.option_nom aura l’option dĂ©finie. value peut ĂȘtre n’importe quelle chaĂźne qui ne contient pas de nouvelle ligne.

Vous pouvez utiliser cette option de ligne de commande Ă  plusieurs reprises pour dĂ©finir plusieurs options d’extracteur. Si vous fournissez plusieurs valeurs pour la mĂȘme option d’extracteur, le comportement dĂ©pend du type attendu par l’option d’extracteur. Les options de chaĂźne utilisent la derniĂšre valeur fournie. Les options de tableau utilisent toutes les valeurs fournies, dans l’ordre. Les options d’extracteur spĂ©cifiĂ©es Ă  l’aide de cette option de ligne de commande sont traitĂ©es aprĂšs les options d’extracteur fournies via --extractor-options-file.

Lorsqu’elles sont passĂ©es Ă  codeql database init ou codeql database begin-tracing, les options sont appliquĂ©es uniquement Ă  l’environnement de traçage indirect. Si votre workflow effectue Ă©galement des appels Ă  codeql database trace-command, les options doivent Ă©galement y ĂȘtre passĂ©es si vous le souhaitez.

Consultez https://codeql.github.com/docs/codeql-cli/extractor-options pour plus d’informations sur les options d’extracteur CodeQL, notamment sur la façon de lister les options dĂ©clarĂ©es par chaque extracteur.

--extractor-options-file=<extractor-options-bundle-file>

SpĂ©cifie les fichiers de bundle d’options d’extracteur. Un fichier bundle d’options d’extracteur est un fichier JSON (extension .json) ou un fichier YAML (extension .yaml ou .yml) qui dĂ©finit les options de l’extracteur. Le fichier doit avoir la clĂ© de mappage de niveau supĂ©rieur « extractor Â» et, dessous, les noms d’extracteur en tant que clĂ©s de mappage de deuxiĂšme niveau. Les autres niveaux de mappage reprĂ©sentent les groupes d’extracteurs imbriquĂ©s, et les options de chaĂźne et de tableau sont des entrĂ©es de mappage avec des valeurs de chaĂźne et de tableau.

Les fichiers de bundle d’options d’extracteur sont lus dans l’ordre dans lequel ils sont spĂ©cifiĂ©s. Si des fichiers de bundle d’options d’extracteur diffĂ©rents spĂ©cifient la mĂȘme option d’extracteur, le comportement dĂ©pend du type attendu par l’option d’extracteur. Les options de chaĂźne utilisent la derniĂšre valeur fournie. Les options de tableau utilisent toutes les valeurs fournies, dans l’ordre. Les options d’extracteur spĂ©cifiĂ©es Ă  l’aide de cette option de ligne de commande sont traitĂ©es avant les options d’extracteur fournies via --extractor-option.

Lorsqu’elles sont passĂ©es Ă  codeql database init ou codeql database begin-tracing, les options sont appliquĂ©es uniquement Ă  l’environnement de traçage indirect. Si votre workflow effectue Ă©galement des appels Ă  codeql database trace-command, les options doivent Ă©galement y ĂȘtre passĂ©es si vous le souhaitez.

Consultez https://codeql.github.com/docs/codeql-cli/extractor-options pour plus d’informations sur les options d’extracteur CodeQL, notamment sur la façon de lister les options dĂ©clarĂ©es par chaque extracteur.

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.