{"meta":{"title":"database index-files","intro":"[管道] 使用给定的 CodeQL 提取程序为独立文件编制索引。","product":"安全性和代码质量","breadcrumbs":[{"href":"/zh/code-security","title":"安全性和代码质量"},{"href":"/zh/code-security/reference","title":"Reference"},{"href":"/zh/code-security/reference/code-scanning","title":"代码扫描"},{"href":"/zh/code-security/reference/code-scanning/codeql","title":"CodeQL"},{"href":"/zh/code-security/reference/code-scanning/codeql/codeql-cli-manual","title":"CodeQL CLI 手册"},{"href":"/zh/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-index-files","title":"database index-files"}],"documentType":"article"},"body":"# database index-files\n\n\\[管道] 使用给定的 CodeQL 提取程序为独立文件编制索引。\n\n> \\[!NOTE]\n> 此内容描述了 CodeQL CLI 的最新版本。 有关此版本的详细信息，请参阅 <https://github.com/github/codeql-cli-binaries/releases> 。\n>\n> 若要查看早期版本中此命令可用选项的详细信息，请在终端中使用 <span style=\"white-space: nowrap;\">`--help`</span> 选项运行命令。\n\n## 概要\n\n```shell copy\ncodeql database index-files --language=<lang> [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>\n```\n\n## Description\n\n```\n          \\[管道] 使用给定的 CodeQL 提取程序为独立文件编制索引。\n```\n\n此命令选择指定工作目录下的一组文件，并对它们应用给定的提取程序。 默认情况下，会选中所有文件。 典型的调用将指定用于限制包含的文件集的选项。\n\n```\n          `--include`、`--exclude` 和 `--prune` 选项都采用 glob 模式，这些模式可使用以下通配符：\n```\n\n* 单个“?”匹配除正斜杠/反斜杠以外的任何字符；\n* 单个“\\*”匹配除正斜杠/反斜杠以外的任何数量的字符；\n* 模式“\\*\\*”匹配零个或多个完整的目录组件。\n\n## 选项\n\n### 主要选项\n\n#### `<database>`\n\n```\n          \\[必选] 正在构建的 CodeQL 数据库的路径。 必须准备好此选项，以便使用 [codeql database init](/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-init) 进行提取。\n```\n\n#### `-l, --language=<lang>`\n\n```\n          \\[必选] 应用于为匹配文件编制索引的提取程序。\n```\n\n#### `-j, --threads=<num>`\n\n要求提取程序使用此数量的线程。 此选项作为建议传递给提取程序。 如果设置了 CODEQL\\_THREADS 环境变量，则环境变量值优先于此选项。\n\n可以传递 0 以在机器上每个内核使用一个线程，或传递 -*N* 以保留 *N* 个内核不使用（但仍至少使用一个线程）。\n\n#### `-M, --ram=<MB>`\n\n要求提取程序使用此内存量。 此选项作为建议传递给提取程序。 如果设置了 CODEQL\\_RAM 环境变量，则环境变量值优先于此选项。\n\n#### `--working-dir=<dir>`\n\n```\n          \\[高级] 应执行指定命令的目录。 如果未提供此参数，则会在传递给 `--source-root` 的 [](/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-create) 的值（若存在）中执行命令。 如果未提供任何 `--source-root` 参数，则会在当前工作目录中执行命令。\n```\n\n### 用于控制提取程序行为的选项\n\n#### `-O, --extractor-option=<extractor-option-name=value>`\n\n设置 CodeQL 提取程序的选项。\n`extractor-option-name` 应为 \\_name.group1.group2.option\\_name 或 group1.group2.option\\_name 格式。 如果 `extractor_option_name` 以提取程序名称开头，则指示的提取程序必须声明选项 group1.group2.option\\_name。 否则，声明选项 group1.group2.option\\_name 的任何提取程序都将设置该选项。\n`value` 可以是任何不包含换行符的字符串。\n\n可以重复使用此命令行选项来设置多个提取程序选项。 如果为同一提取程序选项提供多个值，则行为取决于提取程序选项所需的类型。 字符串选项将使用提供的最后一个值。 数组选项将按顺序使用提供的所有值。 使用此命令行选项指定的提取程序选项在通过 `--extractor-options-file` 给定的提取程序选项之后进行处理。\n\n传递给 [codeql database init](/zh/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-init) 或 `codeql database begin-tracing` 时，选项将仅应用于间接跟踪环境。 如果工作流还调用 [codeql database trace-command](/zh/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-trace-command)，则还需根据需要传递选项。\n\n请参阅 <https://codeql.github.com/docs/codeql-cli/extractor-options> 以了解有关 CodeQL 提取程序选项的详细信息，包括如何列出每个提取程序声明的选项。\n\n#### `--extractor-options-file=<extractor-options-bundle-file>`\n\n指定提取程序选项捆绑文件。 提取程序选项捆绑文件是设置提取程序选项的 JSON 文件（扩展名为 `.json`）或 YAML 文件（扩展名为 `.yaml` 或 `.yml`）。 该文件必须具有顶级映射键“extractor”，并且其下必须具有作为二级映射键的提取程序名称。 进一步的映射级别表示嵌套的提取程序组，字符串和数组选项是具有字符串和数组值的映射条目。\n\n按指定的顺序读取提取程序选项捆绑文件。\n如果不同的提取程序选项捆绑文件指定了相同的提取程序选项，则行为取决于提取程序选项所需的类型。 字符串选项将使用提供的最后一个值。 数组选项将按顺序使用提供的所有值。 使用此命令行选项指定的提取程序选项在通过 `--extractor-option` 给定的提取程序选项之前进行处理。\n\n传递给 [codeql database init](/zh/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-init) 或 `codeql database begin-tracing` 时，选项将仅应用于间接跟踪环境。 如果工作流还调用 [codeql database trace-command](/zh/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-trace-command)，则还需根据需要传递选项。\n\n请参阅 <https://codeql.github.com/docs/codeql-cli/extractor-options> 以了解有关 CodeQL 提取程序选项的详细信息，包括如何列出每个提取程序声明的选项。\n\n### 用于限制已编制索引的文件集的选项\n\n#### `--include-extension=<.ext>`\n\n在搜索目录树中包含具有给定扩展名的所有文件。 通常，应在扩展名前面添加圆点。\n例如，传递 `--include-extension .xml` 将包括扩展名为“.xml”的所有文件。 此选项与已否定的 `--include` 选项不兼容。\n\n#### `--include=<glob>`\n\n使用搜索目录中每个文件和目录的相对路径，在搜索目录树中包含与给定 glob 匹配的所有文件和目录。 如果 glob 以 `!` 字符开头，则改为排除匹配的文件和目录。\n\n```\n          `--include` 选项按顺序处理，后续选项会覆盖先前的选项。 例如，`--include ** --include !sub/*.ts --include sub/main.*` 将包含 `sub/main.ts`（因为它被 `sub/main.*` 包含在内），排除 `sub/index.ts`（因为它被 `!sub/*.ts` 排除在外），并包含 `sub/test.js`（因为它被 `**` 包含在内，随后又不被排除在外。）\n```\n\n#### `--also-match=<glob>`\n\n使用搜索目录中每个文件和目录的相对路径，要求所有结果也匹配给定的 glob。 此选项的结构和解释与 `--include` 相同，但它指定与 `--include` 一起应用的单独 glob 序列。\n\n#### `--exclude=<glob>`\n\n使用搜索目录中每个文件和目录的相对路径，排除与给定 glob 匹配的所有文件和目录。 此选项将覆盖所有 include 选项。 此选项与已否定的 `--include` 选项不兼容。\n\n#### `--prune=<glob>`\n\n使用搜索目录中每个文件和目录的相对路径，排除与给定 glob 匹配的所有文件和目录。 此选项将覆盖所有 include 选项。 此选项与已否定的 `--include` 选项不兼容。\n\n#### `--size-limit=<bytes>`\n\n排除大小超过给定限制的所有文件。 大小限制以字节为单位，或者单位是后缀为“k”的千字节 (KiB)、后缀为“m”的兆字节 (MiB) 和后缀为“g”的千兆字节 (GiB)。 此选项将覆盖所有 include 选项。\n\n#### `--total-size-limit=<bytes>`\n\n如果所有已解析文件的组合大小超过给定限制，则退出命令并显示错误。 大小限制以字节为单位，或者单位是后缀为“k”的千字节 (KiB)、后缀为“m”的兆字节 (MiB) 和后缀为“g”的千兆字节 (GiB)。\n\n#### `--[no-]follow-symlinks`\n\n遵循指向其目标的任何符号链接。\n\n#### `--[no-]find-any`\n\n最多查找一个匹配项（而不是所有匹配项）。\n\n自 `v2.11.3` 起可用。\n\n### 常用选项\n\n#### `-h, --help`\n\n显示此帮助文本。\n\n#### `-J=<opt>`\n\n```\n          \\[高级] 向运行命令的 JVM 提供选项。\n```\n\n（请注意，无法正确处理包含空格的选项。）\n\n#### `-v, --verbose`\n\n以增量方式增加输出的进度消息数。\n\n#### `-q, --quiet`\n\n以增量方式减少输出的进度消息数。\n\n#### `--verbosity=<level>`\n\n```\n          \\[高级] 明确将详细级别设置为 errors、warnings、progress、progress+、progress++、progress+++ 之一。 重写 `-v` 和 `-q`。\n```\n\n#### `--logdir=<dir>`\n\n```\n          \\[高级] 将详细日志写入指定目录中的一个或多个文件，生成的文件名包含时间戳和正在运行的子命令名称。\n```\n\n（要使用可以完全控制的名称编写日志文件，请根据需要提供 `--log-to-stderr` 并重定向 stderr。）\n\n#### `--common-caches=<dir>`\n\n```\n          \\[高级] 控制磁盘上缓存数据的位置，这些数据将在 CLI 的多次运行之间保留，例如下载的 QL 包和编译的查询计划。 如果未明确设置，则默认为用户主目录中名为 `.codeql` 的目录；如果尚不存在，则会创建该目录。\n```\n\n自 `v2.15.2` 起可用。"}