此内容描述了 CodeQL CLI 的最新版本。 有关此版本的详细信息,请参阅 https://github.com/github/codeql-cli-binaries/releases 。
若要查看早期版本中此命令可用选项的详细信息,请在终端中使用 --help
选项运行命令。
摘要
codeql database index-files --language=<lang> [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>
codeql database index-files --language=<lang> [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>
说明
[Plumbing] 使用给定的 CodeQL 提取程序为独立文件编制索引。
此命令选择指定工作目录下的一组文件,并对它们应用给定的提取程序。 默认情况下,会选中所有文件。 典型的调用将指定用于限制包含的文件集的选项。
--include
、--exclude
和 --prune
选项都采用 glob 模式,这些模式可使用以下通配符:
- 单个“?”匹配除正斜杠/反斜杠以外的任何字符;
- 单个“*”匹配除正斜杠/反斜杠以外的任何数量的字符;
- 模式“**”匹配零个或多个完整的目录组件。
选项
主要选项
<database>
[必需] 正在构建的 CodeQL 数据库的路径。 必须准备好此选项,以便使用 codeql database init 进行提取。
-l, --language=<lang>
[必需] 应该用于为匹配文件编制索引的提取程序。
-j, --threads=<num>
要求提取程序使用此数量的线程。 此选项作为建议传递给提取程序。 如果设置了 CODEQL_THREADS 环境变量,则环境变量值优先于此选项。
可以传递 0 以在计算机上对每个核心都使用一个线程,也可以传递 -N 以将 N 个核心保留为未使用状态(仍至少使用一个线程的情况除外) 。
-M, --ram=<MB>
要求提取程序使用此内存量。 此选项作为建议传递给提取程序。 如果设置了 CODEQL_RAM 环境变量,则环境变量值优先于此选项。
--working-dir=<dir>
[高级] 应在其中执行指定命令的目录。 如果未提供此参数,则会在传递给 codeql database create 的 --source-root
的值(若存在)中执行命令。 如果未提供任何 --source-root
参数,则会在当前工作目录中执行命令。
用于控制提取程序行为的选项
-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 init 或 codeql 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 init 或 codeql database begin-tracing
时,选项将仅应用于间接跟踪环境。 如果工作流还调用 codeql database trace-command,则还需根据需要传递选项。
请参阅 https://codeql.github.com/docs/codeql-cli/extractor-options 以了解有关 CodeQL 提取程序选项的详细信息,包括如何列出每个提取程序声明的选项。
用于限制已编制索引的文件集的选项
--include-extension=<.ext>
在搜索目录树中包含具有给定扩展名的所有文件。 通常,应在扩展名前面添加圆点。
例如,传递 --include-extension .xml
将包括扩展名为“.xml”的所有文件。 此选项与已否定的 --include
选项不兼容。
--include=<glob>
使用搜索目录中每个文件和目录的相对路径,在搜索目录树中包含与给定 glob 匹配的所有文件和目录。 如果 glob 以 !
字符开头,则改为排除匹配的文件和目录。
--include
选项按顺序处理,后面的选项覆盖前面的选项。 例如,--include ** --include !sub/*.ts --include sub/main.*
将包含 sub/main.ts
(因为它被 sub/main.*
包含在内),排除 sub/index.ts
(因为它被 !sub/*.ts
排除在外),并包含 sub/test.js
(因为它被 **
包含在内,随后又不被排除在外。)
--also-match=<glob>
使用搜索目录中每个文件和目录的相对路径,要求所有结果也匹配给定的 glob。 此选项的结构和解释与 --include
相同,但它指定与 --include
一起应用的单独 glob 序列。
--exclude=<glob>
使用搜索目录中每个文件和目录的相对路径,排除与给定 glob 匹配的所有文件和目录。 此选项将覆盖所有 include 选项。 此选项与已否定的 --include
选项不兼容。
--prune=<glob>
使用搜索目录中每个文件和目录的相对路径,排除与给定 glob 匹配的所有文件和目录。 此选项将覆盖所有 include 选项。 此选项与已否定的 --include
选项不兼容。
--size-limit=<bytes>
排除大小超过给定限制的所有文件。 大小限制以字节为单位,或者单位是后缀为“k”的千字节 (KiB)、后缀为“m”的兆字节 (MiB) 和后缀为“g”的千兆字节 (GiB)。 此选项将覆盖所有 include 选项。
--total-size-limit=<bytes>
如果所有已解析文件的组合大小超过给定限制,则退出命令并显示错误。 大小限制以字节为单位,或者单位是后缀为“k”的千字节 (KiB)、后缀为“m”的兆字节 (MiB) 和后缀为“g”的千兆字节 (GiB)。
--[no-]follow-symlinks
遵循指向其目标的任何符号链接。
--[no-]find-any
最多查找一个匹配项(而不是所有匹配项)。
自 v2.11.3
起可用。
常用选项
-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
起可用。