Note
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
codeql execute upgrades [--threads=<num>] <options>... -- <dataset> <script>...
codeql execute upgrades [--threads=<num>] <options>... -- <dataset> <script>...
Description
[Plomberie] Exécute des scripts de mise à niveau sur un jeu de données QL brut existant.
Cette commande exécute une séquence particulière de scripts de mise à niveau sur le jeu de données. Il incombe à l’appelant que l’« ancien » schéma de base de données de chaque script de mise à niveau corresponde au « nouveau » schéma de base de données du script précédent (ou, pour le premier script, au schéma de base de données actuel du jeu de données). Si ce n’est pas le cas, une erreur est signalée.
Options
Options principales
<dataset>
[Obligatoire] Chemin du jeu de données QL brut à mettre à niveau.
<script>...
[Obligatoire] Chemins des scripts de mise à niveau à exécuter. (Chaque script de mise à niveau est un répertoire contenant plusieurs fichiers qui définissent une opération de mise à niveau.) Ils doivent être donnés dans l’ordre dans lequel ils doivent être appliqués.
--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 ;
.)
Options pour contrôler l’évaluation des requêtes de mise à niveau
--[no-]tuple-counting
[Avancé] Affiche le nombre de tuples pour chaque étape d’évaluation dans les journaux de l’évaluateur de requête. 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