Skip to main content

警告:检测到项目中有 X 个 Kotlin 文件没有生成就无法处理

虽然可在不生成代码的情况下为 Java 创建 CodeQL 数据库,但会排除 Kotlin 文件,除非生成代码。

关于此警告

Warning: Detected X Kotlin files in your project that could not be processed without a build. To process these files...

如果在使用 none 的生成模式(默认设置)为 Java 运行 CodeQL code scanning 的存储库中检测到 Kotlin 文件,或使用 --build-mode none 为包含 Java 和 Kotlin 文件的存储库运行 CodeQL CLI,则会报告此警告。

确认警告原因

仅当生成模式 none 用于包含 Java 和 Kotlin 文件的存储库时,才会显示此警告。

CodeQL 操作和 CodeQL CLI 支持适用于 Java 的 none 的生成模式。 这提供一种简单方法,可在不生成代码库的情况下分析 Java 代码。 但是,生成的 CodeQL 数据库中并不包含 Kotlin 文件。

可通过查看存储库或触发警告的拉取请求,验证是否存在 Kotlin 文件。 仅在以下情况下使用 none 生成模式:

  • Code scanning 是在添加 Kotlin 代码以及引入新模式之后(之前会使用 autobuild 模式)为存储库启用的。
  • CodeQL 工作流为存储库指定一个生成模式 none(检查 build-mode: none)。
  • 在没有 --command--build-mode none 的情况下调用 CodeQL CLI。

修复问题

如果并不想分析 Kotlin 文件,则可以忽略此警告消息。

如果要将分析更新为也包含 Kotlin 文件,则 CodeQL 需要生成 Java 和 Kotlin 代码。

Code scanning 默认设置

  1. 等到 Kotlin 代码合并到存储库的默认分支中。
  2. 在存储库的“设置”页上禁用并重新启用默认设置。

这将使用自动生成检测来触发新的分析。 请参阅“配置代码扫描的默认设置”和“生成 Java 和 Kotlin”。

如果自动生成检测失败,则需要对项目使用正确的生成命令使用高级设置来分析这两种语言。

Code scanning 高级设置

如果已经使用高级设置,则可在编辑工作流并将生成模式从 java-kotlin 更改为 noneautobuild,以自动生成项目,或更改为 manual 以指定你自己的生成步骤。 生成 Java 和 Kotlin

如果需要从默认设置转换为高级设置,则需要在存储库的“设置”页上启用高级设置,并创建 CodeQL 工作流。 然后,可以定义 manual 项目的生成模式 java-kotlin 并定义生成命令。

运行 CodeQL CLI

更新调用,为存储库和拉取请求运行 CodeQL CLI,将 --build-mode none 替换为 --build-mode autobuild 以尝试自动生成检测。 如果自动生成检测失败,请删除 --build-mode 选项,并包含一个或多个 --command 详细描述生成脚本或生成项目所需的步骤的选项。

其他阅读材料