跳到主要内容

数据库最终化

[内部实现] 数据库创建的最后步骤。

谁可以使用此功能?

CodeQL 可用于以下代码库类型

本文内容

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

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

概要

Shell
codeql database finalize [--dbscheme=<file>] [--threads=<num>] [--ram=<MB>] <options>... -- <database>

描述

[内部实现] 数据库创建的最后步骤。

完成使用 codeql database init 创建并随后使用 codeql database trace-command 使用分析数据填充的数据库。在可以查询新数据库之前,需要执行此操作。

选项

主要选项

<database>

[必填] 正在构建的 CodeQL 数据库的路径。这必须已使用 codeql database init 准备好进行提取。

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

--[no-]db-cluster

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

--additional-dbs=<database>[:<database>...]

[高级] 正在构建的其他 CodeQL 数据库的路径。这些本身不会被完成,但它们的数据将包含在正在创建的已完成数据库中。这是一个高级选项,在所有情况下可能不会产生预期的效果。有关更多信息,请参阅 codeql database import 的文档。

如果给出 --db-cluster 选项,则预期这些将是数据库集群而不是单个 CodeQL 数据库。

(注意:在 Windows 上,路径分隔符是 ;)。

--no-cleanup

[高级] 抑制完成后的所有数据库清理。用于调试目的。

--no-pre-finalize

[高级] 跳过活动 CodeQL 提取器指定的任何预完成脚本。

--[no-]skip-empty

[高级] 如果数据库为空(因为在构建过程中没有看到任何源代码),则输出警告而不是失败。空数据库将保持未完成状态。

控制 TRAP 导入操作的选项

-S, --dbscheme=<file>

[高级] 覆盖自动检测到的 dbscheme 定义,假设 TRAP 文件符合该定义。通常,这是从数据库的提取器中获取的。

-j, --threads=<num>

为导入操作使用这么多线程。

默认为 1。您可以传递 0 以对机器上的每个核心使用一个线程,或者传递 -N 以保留 N 个核心未使用(但仍然至少使用一个线程)。

-M, --ram=<MB>

为导入操作使用这么多内存。

低级数据集清理选项

--max-disk-cache=<MB>

设置中间查询结果的磁盘缓存可以使用的最大空间量。

如果没有明确配置此大小,评估器将尝试使用基于数据集大小和查询复杂性的“合理”缓存空间量。明确设置高于此默认用量的限制将启用其他缓存,这可以加快以后的查询速度。

--min-disk-free=<MB>

[高级] 设置文件系统上空闲空间的目标量。

如果未给出--max-disk-cache,则当文件系统上的空闲空间低于此值时,评估器将努力减少磁盘缓存使用。

--min-disk-free-pct=<pct>

[高级] 设置文件系统上空闲空间的目标比例。

如果未给出--max-disk-cache,则当文件系统上的空闲空间低于此百分比时,评估器将努力减少磁盘缓存使用。

--cache-cleanup=<mode>

选择清理缓存的力度。选项包括:

clear:删除整个缓存,将其修剪到新提取数据集的状态。

trim (默认):修剪所有内容,除了明确“缓存”的谓词。

fit:只需确保遵守磁盘缓存的已定义大小限制,删除尽可能多的中间文件。

--cleanup-upgrade-backups

删除数据库升级产生的任何备份目录。

导入TRAP的检查选项

--[no-]check-undefined-labels

[高级] 报告未定义标签的错误。

--[no-]check-unused-labels

[高级] 报告未使用标签的错误。

--[no-]check-repeated-labels

[高级] 报告重复标签的错误。

--[no-]check-redefined-labels

[高级] 报告已重新定义标签的错误。

--[no-]check-use-before-definition

[高级] 报告在定义之前使用的标签的错误。

--[no-]fail-on-trap-errors

[高级] 如果在 TRAP 导入期间发生错误,则退出非零值。

--[no-]include-location-in-star

[高级] 构造编码其来源TRAP文件位置的实体ID。这对于调试TRAP生成器很有用,但会占用数据集的大量空间。

--[no-]linkage-aware-import

[高级] 控制codeql 数据集导入 是否是链接感知的(默认)。在数据库创建的这一部分消耗过多内存的项目上,禁用此选项可以帮助它们取得进展,但代价是数据库的完整性。

v2.15.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版本起可用。