注意:网站管理员必须为 你的 GitHub Enterprise Server 实例 启用 code scanning,然后你才能使用此功能。 如果要使用 GitHub Actions 扫描代码,站点管理员还必须启用 GitHub Actions 并设置所需的基础结构。 有关详细信息,请参阅“为设备配置代码扫描”。
用于配置 code scanning 的选项
在仓库级别决定如何生成 code scanning 警报,以及使用哪些工具。 GitHub Enterprise Server 对 CodeQL 分析提供完全集成的支持,还支持使用第三方工具进行分析。 有关详细信息,请参阅以下项目符号和“关于代码扫描”。
-
CodeQL:使用 GitHub Actions(请参阅下文)或在第三方持续集成 (CI) 系统中运行 CodeQL 分析(请参阅“关于 CI 系统中的 CodeQL 代码扫描”)。
-
Third‑party:使用 GitHub Actions 或第三方工具并将结果上传至 GitHub Enterprise Server(请参阅“将 SARIF 文件上传到 GitHub”)。
如果使用多个配置运行代码扫描,则警报有时会有多个分析源。 如果警报有多个分析源,你可在警报页上查看每个分析源的警报状态。 有关详细信息,请参阅“关于代码扫描警报”。
注意:本文介绍了此版 GitHub Enterprise Server 的初始发行版中包含的 CodeQL 操作版本和相关 CodeQL CLI 捆绑包中可用的功能。 如果企业使用较新版本的 CodeQL 操作,请参阅本文的 GitHub Enterprise Cloud 版本,了解有关最新功能的信息。 有关使用最新版本的信息,请参阅“为设备配置代码扫描”。
手动配置 code scanning
-
在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。 1. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。
-
在“Code scanning 警报”右侧,单击“设置 code scanning”。如果“code scanning 警报”缺失,则需要让组织所有者或存储库管理员启用 GitHub Advanced Security。有关详细信息,请参阅“管理组织的安全和分析设置”或“管理存储库的安全和分析设置”。
-
在“开始使用 code scanning”下,单击 CodeQL 分析工作流程 或第三方工作流上的“设置此工作流”。
只有在工作流与在存储库中检测到的编程语言相关时,才会显示工作流。 CodeQL 分析工作流程 始终显示,但仅在 CodeQL 分析支持存储库中存在的语言时才启用“设置此工作流”按钮。 -
要自定义 code scanning 扫描代码的方式,请编辑工作流程。
通常,可以提交 CodeQL 分析工作流程 而无需对其进行任何更改。 但是,许多第三方工作流需要额外的配置,因此请在提交之前读取工作流中的注释。
有关详细信息,请参阅“自定义代码扫描”。
-
单击“提交更改...”
-
在文本字段中,键入提交消息。
-
选择是直接提交到默认分支,还是创建新分支并启动拉取请求。
-
单击“提交新文件”或“建议新文件”。
在建议的 CodeQL 分析工作流程 中,code scanning 配置为在每次将更改推送到默认分支或任何受保护分支或者对默认分支提出拉取请求时分析代码。 因此,code scanning 将立即开始。
用于代码扫描的 on:pull_request
和 on:push
触发器各自用于不同的目的。 有关详细信息,请参阅“自定义代码扫描”。
批量配置 code scanning
可以使用脚本在多个存储库中一次配置 code scanning。 如果要使用脚本发起将 GitHub Actions 工作流添加到多个存储库的拉取请求,请参阅 jhutchings1/Create-ActionsPRs
存储库,了解使用 PowerShell 的示例,或者对于没有 PowerShell 但希望改用 NodeJS 的团队,请参阅 nickliffen/ghas-enablement
。
查看来自 code scanning 的日志记录输出
为存储库配置 code scanning 后,可以监视操作运行时的输出。
-
在你的存储库名称下,单击 “操作”。
You can view the run status of code scanning and get notifications for completed runs. For more information, see "Managing a workflow run" and "Configuring notifications." 条目的文本是提交消息的标题。
-
单击 code scanning 工作流程的项目。
-
单击左侧的作业名称。 例如,“分析(语言)”。
-
查看此工作流运行时操作的日志记录输出。
-
在所有作业完成后,您可以查看已识别的任何 code scanning 警报的详细信息。 有关详细信息,请参阅“管理存储库的代码扫描警报”。
注意:如果发起将 code scanning 工作流添加到存储库的拉取请求,则在合并拉取请求之前,来自该拉取请求的警报不会直接显示在 Code scanning 页面上。 如果发现任何警报,可以在合并拉取请求之前查看这些警报,方法是在 Code scanning 页面的横幅中单击“发现 NUMBER 条警报”链接。
了解拉取请求检查
设置在拉取请求上运行的每个 code scanning 工作流程始终有至少两个条目列在拉取请求的检查部分中。 工作流程中每个分析作业有一个条目,最后还有一个对应于分析结果的条目。
code scanning 分析检查的名称采用形式:"TOOL NAME / JOB NAME (TRIGGER)"。 例如,对于 CodeQL,C++ 代码的分析有条目 "CodeQL / Analyze (cpp) (pull_request)"。 可单击 code scanning 分析条目上的“详细信息”来查看日志记录数据。 这允许您在分析作业失败时调试问题。 例如,对于编译的语言的 code scanning 分析,如果操作无法生成代码,则可能会发生这种情况。
当 code scanning 作业完成后,GitHub 检查拉取请求是否添加了任何警报,并将“Code scanning 结果/工具名称”条目添加到检查列表中。 在执行至少一次 code scanning 后,可单击“详细信息”查看分析结果。
后续步骤
配置 code scanning 并允许其操作完成后,你可以:
- 查看为此仓库生成的所有 code scanning 警报。 有关详细信息,请参阅“管理存储库的代码扫描警报”。
- 查看在配置 code scanning 后提交的拉取请求生成的任何警报。 有关详细信息,请参阅“鉴定拉取请求中的代码扫描警报”。
- 为已完成的运行配置通知。 有关详细信息,请参阅“配置通知”。
- 查看由 code scanning 分析生成的日志。 有关详细信息,请参阅“查看代码扫描日志”。
- 调查初始配置 CodeQL code scanning 时发生的任何问题。 有关详细信息,请参阅“对 CodeQL 工作流进行故障排除”。
- 自定义 code scanning 如何扫描您的仓库中的代码。 有关详细信息,请参阅“自定义代码扫描”。