此内容描述了 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
以提取器名称开头,则指定的提取器必须声明选项 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,则如果需要,也需要在那里传递这些选项。
有关 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
相同的结构和相同的解释,但指定了与--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
版本起可用。