注意
此内容描述了 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>
描述
[底层] 使用给定的 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 或 group1.group2.option_name 的形式。如果 extractor_option_name 以提取器名称开头,则对应的提取器必须声明该 option group1.group2.option_name。否则,声明了该 option 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,则需要在该命令中同样传递这些选项(如果需要的话)。
有关 CodeQL 提取器选项的更多信息(包括如何列出每个提取器声明的选项),请参阅 https://codeql.github.com/docs/codeql-cli/extractor-options。
限制已索引文件集合的选项
--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 相同,只是它指定了一组单独的 glob,并与 --include 一起应用。
--exclude=<glob>
排除所有匹配给定 glob 的文件和目录,使用相对于搜索目录的相对路径。此选项会覆盖所有包含选项。此选项与否定的 --include 选项不兼容。
--prune=<glob>
排除所有匹配给定 glob 的文件和目录,使用相对于搜索目录的相对路径。此选项会覆盖所有包含选项。此选项与否定的 --include 选项不兼容。
--size-limit=<bytes>
排除所有大小超过给定限制的文件。大小限制可以是字节数,也可以使用 “k” 后缀表示千字节 (KiB)、使用 “m” 后缀表示兆字节 (MiB) 或使用 “g” 后缀表示千兆字节 (GiB)。此选项会覆盖所有包含选项。
--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>
[高级] 将详细程度显式设置为以下之一:errors、warnings、progress、progress+、progress++、progress+++。会覆盖 -v 和 -q。
--logdir=<dir>
[高级] 将详细日志写入指定目录中的一个或多个文件,文件名会包含时间戳和运行的子命令名称。
(若希望自行完全控制日志文件名,请改用 --log-to-stderr 并按需重定向 stderr。)
--common-caches=<dir>
[高级] 控制磁盘上缓存数据的位置,这些数据会在 CLI 的多次运行之间保持,例如已下载的 QL 包和已编译的查询计划。如果未显式设置,则默认使用用户主目录下名为 .codeql 的目录;如该目录不存在,则会自动创建。
自 v2.15.2 起可用。