Note: The CodeQL runner is being deprecated. On GitHub Enterprise Server 3.0 and greater, you can install CodeQL CLI version 2.6.3 to replace CodeQL runner.
For more information, see the CodeQL runner deprecation. For information on migrating to CodeQL CLI, see "Migrating from the CodeQL runner to 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 代� �扫描”。