Skip to main content

database trace-command

[Plumbing] 在跟踪生成过程中运行单个命令。

谁可以使用此功能?

GitHub CodeQL 在安装后按用户授权。 根据许可证限制,只能将 CodeQL 用于某些任务。 有关详细信息,请参阅“关于 CodeQL CLI”。

如果你有 GitHub Advanced Security 许可证,则可以使用 CodeQL 进行自动分析、持续集成和持续交付。 有关详细信息,请参阅“关于 GitHub 高级安全性”。

本文内容

此内容描述了 CodeQL CLI 的最新版本。 有关此版本的详细信息,请参阅 https://github.com/github/codeql-cli-binaries/releases

若要查看早期版本中此命令可用选项的详细信息,请在终端中使用 --help 选项运行命令。

摘要

Shell
codeql database trace-command [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database> <command>...

说明

[Plumbing] 在跟踪生成过程中运行单个命令。

这会在跟踪器下运行单个给定命令行,因此可能会执行一些提取,但不会最终确定生成的 CodeQL 数据库。

选项

主要选项

<database>

[必需] 正在构建的 CodeQL 数据库的路径。 必须准备好此选项,以便使用 codeql database init 进行提取。

如果提供了 --db-cluster 选项,这不是数据库本身,而是一个包含数据库的目录,所有这些数据库将一起处理。

<command>...

要执行的命令 这可能由一个或多个用于创建进程的参数组成。 建议在列出命令的参数之前传递“--”参数,以避免其参数与我们的参数混淆。

命令应退出,状态代码为 0。 任何其他退出代码都解释为失败。

当给出 --index-traceless-dbs 时,可以省略该命令。

-j, --threads=<num>

要求提取程序使用此数量的线程。 此选项作为建议传递给提取程序。 如果设置了 CODEQL_THREADS 环境变量,则环境变量值优先于此选项。

可以传递 0 以在计算机上对每个核心都使用一个线程,也可以传递 -N 以将 N 个核心保留为未使用状态(仍至少使用一个线程的情况除外) 。

-M, --ram=<MB>

要求提取程序使用此内存量。 此选项作为建议传递给提取程序。 如果设置了 CODEQL_RAM 环境变量,则环境变量值优先于此选项。

--[no-]db-cluster

指示命令行上给定的目录不是数据库本身,而是包含一个或多个正在构建的数据库的目录。 这些数据库将一起处理。

--no-tracing

[高级] 不要跟踪指定的命令,而是依赖它直接生成所有必要的数据。

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

[高级] 跟踪器配置文件的路径。 它可用于修改生成跟踪器的行为。 它可用于选取作为生成命令的一部分运行的编译器进程,并触发其他工具的执行。 提取程序提供在大多数情况下应该都能工作的默认跟踪器配置文件。

--[no-]index-traceless-dbs

除了指定的命令之外,为不依赖于跟踪生成过程的提取程序运行 main 脚本。 如果要使用 --db-cluster 为多种语言构造数据库,则应仅将此选项指定给 codeql database trace-command 的一次调用。

--[no-]use-build-mode

根据数据库的生成模式确定要运行的内容。 此选项无法与 --index-traceless-dbs 一起使用。

--working-dir=<dir>

[高级] 应在其中执行指定命令的目录。 如果未提供此参数,则会在传递给 codeql database create--source-root 的值(若存在)中执行命令。 如果未提供 --source-root 参数,则在当前工作目录中执行命令。

--no-run-unnecessary-builds

[高级] 仅当正在构建的数据库使用依赖于跟踪生成过程的提取程序时,才运行指定的生成命令。 如果未给定此选项,即使 CodeQL 不需要该命令,也会执行该命令,前提是出于其他原因需要其副作用。

用于控制提取程序行为的选项

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

设置 CodeQL 提取程序的选项。 extractor-option-name 应采用这种形式:extractor_name.group1.group2.option_name or group1.group2.option_name。 如果 extractor_option_name 以提取程序名称开头,则指示的提取程序必须声明选项 group1.group2.option_name。 否则,声明选项 group1.group2.option_name 的任何提取程序都将设置该选项。 value 可以是不包含换行符的任何字符串。

可以重复使用此命令行选项来设置多个提取程序选项。 如果为同一提取程序选项提供多个值,则行为取决于提取程序选项所需的类型。 字符串选项将使用提供的最后一个值。 数组选项将按顺序使用提供的所有值。 使用此命令行选项指定的提取程序选项在通过 --extractor-options-file 给定的提取程序选项之后进行处理。

传递给 codeql database initcodeql database begin-tracing 时,选项将仅应用于间接跟踪环境。 如果工作流还调用 codeql database trace-command,则还需根据需要传递选项。

有关 CodeQL 提取程序选项的详细信息,包括如何列出每个提取程序声明的选项,请参阅 https://codeql.github.com/docs/codeql-cli/extractor-options

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

指定提取程序选项捆绑文件。 提取程序选项捆绑文件是设置提取程序选项的 JSON 文件(扩展名为 .json)或 YAML 文件(扩展名为 .yaml.yml)。 该文件必须具有顶级映射键“extractor”,并且其下必须具有作为二级映射键的提取程序名称。 进一步的映射级别表示嵌套的提取程序组,字符串和数组选项是具有字符串和数组值的映射条目。

按指定的顺序读取提取程序选项捆绑文件。 如果不同的提取程序选项捆绑文件指定了相同的提取程序选项,则行为取决于提取程序选项所需的类型。 字符串选项将使用提供的最后一个值。 数组选项将按顺序使用提供的所有值。 使用此命令行选项指定的提取程序选项在通过 --extractor-option 给定的提取程序选项之前进行处理。

传递给 codeql database initcodeql database begin-tracing 时,选项将仅应用于间接跟踪环境。 如果工作流还调用 codeql database trace-command,则还需根据需要传递选项。

有关 CodeQL 提取程序选项的详细信息,包括如何列出每个提取程序声明的选项,请参阅 https://codeql.github.com/docs/codeql-cli/extractor-options

常用选项

-h, --help

显示此帮助文本。

-J=<opt>

[高级] 为运行命令的 JVM 提供选项。

(请注意,无法正确处理包含空格的选项。)

-v, --verbose

以增量方式增加输出的进度消息数。

-q, --quiet

以增量方式减少输出的进度消息数。

--verbosity=<level>

[高级] 将详细级别显式设置为“错误”、“警告”、“进度”、“进度+”、“进度++”、“进度+++”之一。 重写 -v-q

--logdir=<dir>

[高级] 将详细日志写入给定目录中的一个或多个文件,其中生成的名称包括时间戳和正在运行的子命令的名称。

(若要使用可以完全控制的名称编写日志文件,请根据需要提供 --log-to-stderr 并重定向 stderr。)

--common-caches=<dir>

[高级] 控制磁盘上缓存数据的位置,此位置会在多次运行 CLI(例如下载的 QL 包和已编译查询计划)期间暂留。 如果未明确设置,则默认为用户主目录中名为 .codeql 的目录;如果尚不存在,则会创建该目录。

v2.15.2 起可用。