跳至主要内容

数据库导入

[高级] [底层] 将未完成的数据库导入到另一个未完成的数据库中。

谁可以使用此功能?

CodeQL 可用于以下类型的仓库

本文内容

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

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

概要

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

描述

[高级] [底层] 将未完成的数据库导入到另一个未完成的数据库中。

此命令的结果是目标数据库(第一个参数中的数据库)将使用来自其他所有传递的数据库的数据进行扩充。特别是,将导入来自其他数据库的 TRAP 文件,并将其中的源代码复制。

请注意,此命令在大多数情况下可能不会产生预期的效果。特别是,生成的数据库可能无法正确跟踪组合的各个部分数据库之间的数据流。它仅用于涉及分布式构建系统的某些高级场景中,在这些场景中,已经特别注意构建的分离方式,以确保生成的最终数据库是有意义的。

选项

主要选项

<database>

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

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

<additionalDbs>...

[必填] 应导入到第一个数据库中的未完成数据库的路径。

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

--[no-]db-cluster

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

控制 TRAP 导入操作的选项

-S, --dbscheme=<file>

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

-j, --threads=<num>

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

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

-M, --ram=<MB>

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

检查导入的 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 dataset import 是否_(默认)_ 具有链接感知能力。在数据库创建的这一部分消耗过多内存的项目中,禁用此选项可以帮助它们在牺牲数据库完整性的情况下取得进展。

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