跳至主要内容

警告:在您的项目中检测到 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 代码扫描的代码库中检测到 Kotlin 文件时,或者如果使用 `--build-mode none` 为包含 Java 和 Kotlin 文件的代码库运行 CodeQL CLI 时,将报告此警告。

确认警告的原因

仅当对包含 Java 和 Kotlin 文件的代码库使用 `none` 构建模式时,才会显示此警告。

CodeQL action 和 CodeQL CLI 支持 Java 的 `none` 构建模式。这提供了一种无需构建代码库即可轻松启用 Java 代码分析的方法。但是,生成的 CodeQL 数据库中不包含 Kotlin 文件。

您可以通过查看触发警告的代码库或拉取请求来验证 Kotlin 文件的存在。`none` 构建模式仅在以下情况下使用:

  • 在添加 Kotlin 代码之前和引入新模式之后为代码库启用了代码扫描(以前将使用 `autobuild` 模式)。
  • CodeQL 工作流为代码库指定了 `none` 构建模式(检查 `build-mode: none`)。
  • 调用 CodeQL CLI 时没有 `--command` 并使用 `--build-mode none`。

解决问题

您可能不想分析 Kotlin 文件,在这种情况下,您可以忽略警告消息。

如果要更新分析以包含 Kotlin 文件,则 CodeQL 需要构建 Java 和 Kotlin 代码。

代码扫描默认设置

  1. 等待将 Kotlin 代码合并到代码库的默认分支。
  2. 在代码库的“设置”页面上禁用然后重新启用默认设置。

这将使用自动构建检测触发新的分析。请参阅“[配置代码扫描的默认设置](/en/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)”和“[构建 Java 和 Kotlin](/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#building-java-and-kotlin)”。

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

代码扫描高级设置

如果您已经使用高级设置,则可以编辑 CodeQL 工作流并将 `java-kotlin` 的构建模式从 `none` 更改为 `autobuild` 以自动构建项目,或者更改为 `manual` 以指定您自己的构建步骤。“[构建 Java 和 Kotlin](/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#building-java-and-kotlin)”。

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

直接运行 CodeQL CLI

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

进一步阅读