此内容描述了 CodeQL CLI 的最新版本。有关此版本的更多信息,请参阅https://github.com/github/codeql-cli-binaries/releases。
要在较早版本中查看此命令可用的选项的详细信息,请在终端中使用--help
选项运行该命令。
概要
codeql dataset upgrade [--threads=<num>] [--ram=<MB>] <options>... -- <dataset>
codeql dataset upgrade [--threads=<num>] [--ram=<MB>] <options>... -- <dataset>
描述
[管道] 升级数据集,以便当前工具可以使用它。
这与codeql database upgrade相同,但适用于原始数据集而不是整个数据库。
选项
主要选项
<dataset>
[必填] 要升级的原始 QL 数据集的路径。
--search-path=<dir>[:<dir>...]
可能找到包含升级配方的 QL 包的目录列表。每个目录可以是 QL 包(或包含根目录中 .codeqlmanifest.json
文件的包捆绑包)或一个或多个此类目录的直接父目录。
如果路径包含目录树,则它们的顺序定义了它们之间的优先级:如果必须解析的包名称在一个以上目录树中匹配,则第一个给出的目录树获胜。
当查询其中一个语言时,将其指向开源 CodeQL 存储库的检出应该可以工作。
(注意:在 Windows 上,路径分隔符为 ;
)。
--additional-packs=<dir>[:<dir>...]
[高级] 如果给出了此目录列表,则在 --search-path
中的目录之前搜索升级。这些之间的顺序无关紧要;如果通过此列表在两个不同位置找到包名称,则为错误。
如果您暂时正在开发一个也出现在默认路径中的新版本包,这将很有用。另一方面,**不建议**在配置文件中覆盖此选项;某些内部操作会动态添加此选项,覆盖任何已配置的值。
(注意:在 Windows 上,路径分隔符为 ;
)。
--target-dbscheme=<file>
我们要升级到的目标 dbscheme。如果未给出此值,则将构建最大升级路径
--target-sha=<sha>
[高级] --target-dbscheme
的替代方法,它提供目标 dbscheme 的内部哈希而不是 dbscheme 文件。
--[no-]allow-downgrades
如果没有升级,则包括任何相关的降级
控制升级查询评估的选项
--[no-]tuple-counting
[高级] 显示查询评估器日志中每个评估步骤的元组计数。如果提供了 --evaluator-log
选项,则元组计数将包含在命令生成的基于文本和结构化 JSON 日志中。(这对于复杂 QL 代码的性能优化很有用)。
--timeout=<seconds>
[高级] 设置查询评估的超时长度(以秒为单位)。
超时功能旨在捕获复杂查询评估需要“无限”时间的情况。它不是限制查询评估总时间的一种有效方法。只要计算的每个单独计时部分在超时时间内完成,评估就会继续进行。目前这些单独计时部分是优化查询的“RA 层”,但未来可能会发生变化。
如果未指定超时或指定为 0,则不会设置超时(除了codeql test run,其中默认超时时间为 5 分钟)。
-j, --threads=<num>
使用这么多线程来评估查询。
默认为 1。您可以传递 0 以使用机器上每个内核一个线程,或 -N 以保留 N 个内核未使用(但仍至少使用一个线程)。
--[no-]save-cache
[高级] 将中间结果积极写入磁盘缓存。这需要更多时间并使用(更多)磁盘空间,但可能会加快后续类似查询的执行。
--[no-]expect-discarded-cache
[高级] 基于查询执行后缓存将被丢弃的假设,做出关于评估哪些谓词以及将什么写入磁盘缓存的决策。
--[no-]keep-full-cache
[高级] 在评估完成后不要清理磁盘缓存。如果您打算随后进行codeql dataset cleanup或codeql database cleanup,这可能会节省时间。
--max-disk-cache=<MB>
设置磁盘缓存(用于中间查询结果)可以使用的最大空间量。
如果未明确配置此大小,评估器将尝试根据数据集的大小和查询的复杂性使用“合理”数量的缓存空间。显式设置高于此默认用法的限制将启用其他缓存,这可以加快后续查询的速度。
--min-disk-free=<MB>
[高级] 设置文件系统上的目标可用空间量。
如果未给出--max-disk-cache
,则如果文件系统上的可用空间低于此值,评估器将尽力减少磁盘缓存的使用。
--min-disk-free-pct=<pct>
[高级] 设置文件系统上目标可用空间的百分比。
如果未给出--max-disk-cache
,则如果文件系统上的可用空间低于此百分比,评估器将尽力减少磁盘缓存的使用。
--external=<pred>=<file.csv>
包含外部谓词<pred>行的 CSV 文件。可以提供多个--external
选项。
--xterm-progress=<mode>
[高级] 控制是否使用 xterm 控制序列在 QL 评估期间显示进度跟踪。可能的值为
no
:从不产生花哨的进度;假设是一个哑终端。
auto
(默认):自动检测命令是否在合适的终端中运行。
yes
:假设终端可以理解 xterm 控制序列。此功能仍然依赖于能够自动检测终端的大小,并且如果给出-q
,也将被禁用。
25x80
(或类似):类似于yes
,并且还显式给出终端的大小。
25x80:/dev/pts/17
(或类似):在与 stderr 不同的终端上显示花哨的进度。主要用于内部测试。
控制输出结构化评估器日志的选项
--evaluator-log=<file>
[高级] 将有关评估器性能的结构化日志输出到给定文件。此日志文件的格式可能会在没有任何通知的情况下发生更改,但将是一系列由两个换行符(默认情况下)或一个换行符(如果传递了--evaluator-log-minify
选项)分隔的 JSON 对象。请使用codeql generate log-summary <file>
生成此文件的更稳定的摘要,并避免直接解析文件。如果文件已存在,它将被覆盖。
--evaluator-log-minify
[高级] 如果传递了--evaluator-log
选项,则也传递此选项将使生成的 JSON 日志的大小最小化,但代价是使其不太易于人类阅读。
控制升级过程 RAM 使用量的选项
-M, --ram=<MB>
查询评估器将尽力使它的总内存占用低于此值。(但是,对于大型数据库,文件支持的内存映射可能会超出阈值,在内存压力的情况下,这些映射可以交换到磁盘)。
该值应至少为 2048 MB;较小的值将被透明地向上取整。
常用选项
-h, --help
显示此帮助文本。
-J=<opt>
[高级] 向运行命令的 JVM 提供选项。
(注意,包含空格的选项将无法正确处理。)
-v, --verbose
逐步增加打印的进度消息数量。
-q, --quiet
逐步减少打印的进度消息数量。
--verbosity=<level>
[高级] 显式将详细程度级别设置为 errors、warnings、progress、progress+、progress++、progress+++ 之一。覆盖-v
和-q
。
--logdir=<dir>
[高级] 将详细日志写入给定目录中的一个或多个文件中,生成的名称包含时间戳和正在运行的子命令的名称。
(要以您完全控制的名称写入日志文件,请改为给出--log-to-stderr
并根据需要重定向 stderr。)
--common-caches=<dir>
[高级] 控制磁盘上缓存数据的存储位置,这些数据将在 CLI 的多次运行之间持久存在,例如下载的 QL 包和编译的查询计划。如果未显式设置,则默认为用户主目录中名为.codeql
的目录;如果该目录不存在,则会创建它。
自v2.15.2
起可用。