注意: CodeQL runner 将弃用。 在 GitHub Enterprise Server 3.0 及更高版本上,可以安装 CodeQL CLI 版本 2.6.3 以替换 CodeQL runner。
更多信息请参阅 codeQL 运行器弃用。 有关迁移到 CodeQL CLI 的更多信息,请参阅“从 CodeQL 运行器迁移到 CodeQL CLI”。
init
命令耗时太长
在 CodeQL runner 可以构建和分析代� �之前,它需要访问 CodeQL 包,其中包含 CodeQL CLI 和 CodeQL 库。
首次在计算机上使用 CodeQL runner 时,init
命令会将 CodeQL 包下载到您的计算机上。 此下载可能需要� 分钟时间。
CodeQL 包在运行之间缓存,� 此如果您在同一台计算机上再次使用 CodeQL runner,它不会再次下载 CodeQL 包。
为避免这种自动下载,您可以手动将 CodeQL 包下载到您的计算机上,并使用 init
命令的 --codeql-path
� �志指定路径。
构建过程中找不到代� �
如果用于 CodeQL runner 的 analyze
命令失败并返回错误 No source code was seen during the build
,这表明 CodeQL � 法监视您的代� �。 有� 个原� 可以解释这种失败。
-
自动语言检测发现了受支持的语言,但仓库中没有该语言的可分析代� �。 一个典型的例子是,我们的语言检测服务发现了一个与特定的编程语言相关的文件,例如
.h
或.gyp
文件,但仓库中没有相应的可执行代� �。 要解决此问题,您可以使用init
命令的--languages
� �志,手动定义要分析的语言。 更多信息请参阅“在 CI 系统中配置 CodeQL runner”。 -
您没有使用
autobuild
命令分析编译语言,并且在init
步骤后手动运行构建步骤。 要使构建正常工作,您必须设置环境,使 CodeQL runner 能够监视构建流程。init
命令生成如何导出所需环境变量的指令, � 此您可以在运行init
命令后复制和运行脚本。- 在 macOS 和 Linux 上:
$ . codeql-runner/codeql-env.sh
- 在 Windows 上,使用命令 shell (
cmd
) 或批处理文件 (.bat
):> call codeql-runner\codeql-env.bat
- 在 Windows 上,使用 PowerShell :
> cat codeql-runner\codeql-env.sh | Invoke-Expression
环境变量也存储在文件
codeql-runner/codeql-env.json
中。 此文件包含单个 JSON 对象,它将环境变量键� 射到值。 如果� 法运行由init
命令生成的脚本,您可以改用 JSON � �式的数据。注:如果您使用
init
命令的--temp-dir
� �志来指定临时文件的自定义目录,则codeql-env
文件的路径可能不同。 - 在 macOS 和 Linux 上:
-
您没有使用
autobuild
命令分析 macOS 上的编译语言,并且在init
步骤后手动运行构建步骤。 如果启用了 SIP(系统完整性保护,OSX 最新版本默认启用),则分析可能会失败。 为解决此问题,将使用$CODEQL_RUNNER
环境变量前缀构建命令。 例如,如果您的构建命令是cmd arg1 arg2
,则应运行$CODEQL_RUNNER cmd arg1 arg2
。 -
代� �在容器或在单独的计算机上构建。 如果您使用容器化的构建,或者将构建外包给另一台计算机,请确保在容器或您执行构建任务的计算机上运行 CodeQL runner。 更多信息请参阅“在容器中运行 CodeQL 代� �扫描”。