关于此警告
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 代码。
代码扫描默认设置
- 等待将 Kotlin 代码合并到代码库的默认分支。
- 在代码库的“设置”页面上禁用然后重新启用默认设置。
这将使用自动构建检测触发新的分析。请参阅“[配置代码扫描的默认设置](/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
选项,详细说明构建项目所需的构建脚本或步骤。