{"meta":{"title":"警告：检测到项目中有 X 个 Kotlin 文件，需经过构建才能进行处理。","intro":"虽然可在不生成代码的情况下为 Java 创建 CodeQL 数据库，但会排除 Kotlin 文件，除非生成代码。","product":"安全性和代码质量","breadcrumbs":[{"href":"/zh/code-security","title":"安全性和代码质量"},{"href":"/zh/code-security/reference","title":"Reference"},{"href":"/zh/code-security/reference/code-scanning","title":"代码扫描"},{"href":"/zh/code-security/reference/code-scanning/troubleshoot-analysis-errors","title":"排查与解决分析错误"},{"href":"/zh/code-security/reference/code-scanning/troubleshoot-analysis-errors/kotlin-detected-in-no-build","title":"在没有构建的情况下检测到 Kotlin"}],"documentType":"article"},"body":"# 警告：检测到项目中有 X 个 Kotlin 文件，需经过构建才能进行处理。\n\n虽然可在不生成代码的情况下为 Java 创建 CodeQL 数据库，但会排除 Kotlin 文件，除非生成代码。\n\n## 关于此警告\n\n```text\nWarning: Detected X Kotlin files in your project that could not be processed without a build. To process these files...\n```\n\n如果在使用 `none` 的生成模式（默认设置）为 Java 运行 CodeQL code scanning 的存储库中检测到 Kotlin 文件，或使用 `--build-mode none` 为包含 Java 和 Kotlin 文件的存储库运行 CodeQL CLI，则会报告此警告。\n\n## 确认警告原因\n\n仅当生成模式 `none` 用于包含 Java 和 Kotlin 文件的存储库时，才会显示此警告。\n\nCodeQL 操作和 CodeQL CLI 支持 Java 的 `none` 生成模式。 这提供一种简单方法，可在不生成代码库的情况下分析 Java 代码。 但是，生成的 CodeQL 数据库中并不包含 Kotlin 文件。\n\n可通过查看存储库或触发警告的拉取请求，验证是否存在 Kotlin 文件。 仅在以下情况下使用 `none` 生成模式：\n\n* Code scanning 是在添加 Kotlin 代码以及引入新模式之后（之前会使用 `autobuild` 模式）为存储库启用的。\n* CodeQL 工作流为存储库指定一个生成模式 `none`（检查 `build-mode: none`）。\n* 在没有 `--command` 和 `--build-mode none` 的情况下调用 CodeQL CLI。\n\n## 修复问题\n\n如果并不想分析 Kotlin 文件，则可以忽略此警告消息。\n\n如果要将分析更新为也包含 Kotlin 文件，则 CodeQL 需要生成 Java 和 Kotlin 代码。\n\n### Code scanning 默认设置\n\n1. 等到 Kotlin 代码合并到存储库的默认分支中。\n2. 在存储库的“设置”页上禁用并重新启用默认设置。\n\n这将使用自动构建检测来触发新的分析。 请参阅“[配置代码扫描的默认设置](/zh/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)”和“[构建 Java 和 Kotlin](/zh/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#building-java-and-kotlin)”。\n\n如果自动构建检测失败，您需要使用高级设置，并为项目提供正确的构建命令，以分析这两种语言。\n\n### Code scanning 高级设置\n\n如果已经使用高级设置，则可以编辑 CodeQL 工作流，并将构建模式从 `java-kotlin` 更改为 `none` 或 `autobuild`，以自动构建项目，或更改为 `manual` 以指定您自己的构建步骤。\n[构建 Java 和 Kotlin](/zh/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#building-java-and-kotlin)。\n\n如果需要从默认设置转换为高级设置，则需要在存储库的“设置”页上启用高级设置，并创建 CodeQL 工作流。 然后，可以定义 `manual` 项目的生成模式 `java-kotlin` 并定义生成命令。\n\n### 运行 CodeQL CLI\n\n更新调用，为存储库和拉取请求运行 CodeQL CLI，将 `--build-mode none` 替换为 `--build-mode autobuild` 以尝试自动生成检测。 如果自动生成检测失败，请删除 `--build-mode` 选项，并包含一个或多个 `--command` 详细描述生成脚本或生成项目所需的步骤的选项。\n\n## 延伸阅读\n\n* [配置代码扫描的高级设置](/zh/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning)\n* [构建 Java 和 Kotlin](/zh/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#building-java-and-kotlin)\n* [CodeQL 构建模式](/zh/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#codeql-build-modes)"}