鉴定拉取请求中的代码扫描警报

当 代码扫描 在拉取请求中发现问题时,您可以审查高亮的代码并解决警报。

If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve 代码扫描 alerts for that repository.

代码扫描 适用于所有公共仓库以及启用了 GitHub Advanced Security 的组织拥有的私有仓库。 更多信息请参阅“关于 GitHub Advanced Security”。

关于拉取请求上的 代码扫描 结果

在仓库中,如果 代码扫描 被配置为拉取请求检查,则 代码扫描 将检查拉取请求中的代码。 默认情况下,这仅限于针对默认分支的拉取请求,但是您可以在 GitHub Actions 或第三方 CI/CD 系统中更改此配置。 如果合并分支给目标分支带来新的 代码扫描 警报,这些警报将在拉取请求中被报告为检查结果。 警报还将在拉取请求的 Files changed(文件已更改)选项卡中显示为注释。 如果您拥有仓库的写入权限,您可以在 Security(安全)选项卡中查看任何现有的 代码扫描 警报。 有关仓库警报的更多信息,请参阅“管理仓库的 代码扫描 警报”。

In repositories where 代码扫描 is configured to scan each time code is pushed, 代码扫描 will also map the results to any open pull requests and add the alerts as annotations in the same places as other pull request checks. For more information, see "Scanning on push."

If your pull request targets a protected branch that uses 代码扫描, and the repository owner has configured required status checks, then the "代码扫描 results" check must pass before you can merge the pull request. 更多信息请参阅“关于受保护分支”。

关于 代码扫描 作为拉取请求检查

有许多选项可将 代码扫描 配置为拉取请求检查,因此每个仓库的确切设置会有所不同,有些仓库还会有多个检查。

代码扫描 results check

For all configurations of 代码扫描, the check that contains the results of 代码扫描 is: 代码扫描 results. The results for each analysis tool used are shown separately. Any new alerts caused by changes in the pull request are shown as annotations.

To see the full set of alerts for the analyzed branch, click View all branch alerts. This opens the full alert view where you can filter all the alerts on the branch by type, severity, tag, etc. 更多信息请参阅“管理仓库的代码扫描警报”。

代码扫描 results check on a pull request

代码扫描 results check failures

If the 代码扫描 results check finds any problems with a severity of error, critical, or high, the check fails and the error is reported in the check results. If all the results found by 代码扫描 have lower severities, the alerts are treated as warnings or notes and the check succeeds.

拉取请求上失败的 代码扫描 检查

You can override the default behavior in your repository settings, by specifying the level of severities and security severities that will cause a pull request check failure. For more information, see "Defining the severities causing pull request check failure".

Other 代码扫描 checks

Depending on your configuration, you may see additional checks running on pull requests with 代码扫描 configured. These are usually workflows that analyze the code or that upload 代码扫描 results. These checks are useful for troubleshooting when there are problems with the analysis.

For example, if the repository uses the CodeQL 分析工作流程 a CodeQL / Analyze (LANGUAGE) check is run for each language before the results check runs. 如果存在配置问题,或者拉取请求中断了分析需要编译的语言(例如 C/C ++、C# 或 Java)的构建,则分析检查可能会失败。

与其他拉取请求检查一样,您可以在 Checks(检查)选项卡上查看检查失败的完整细节。 有关配置和故障排除的详细信息,请参阅“配置 代码扫描”或“排查 CodeQL 工作流程故障”。

Viewing an alert on your pull request

You can see any 代码扫描 alerts introduced in a pull request by displaying the Files changed tab. Each alert is shown as an annotation on the lines of code that triggered the alert. The severity of the alert is displayed in the annotation.

拉取请求差异中的警报注释

如果您拥有仓库的写入权限,则某些注释将包含警报额外上下文的链接。 在上例中,您可以在 CodeQL 分析中单击 user-provided value(用户提供的值),以查看不受信任的数据进入数据流的位置(这被称为源)。 在此例中,您还可以通过单击 Show paths(显示路径)来查看从源到使用数据的代码(池)的完整路径。 这样就很容易检查数据是否不受信任,或者分析是否无法识别源与池之间的数据净化步骤。 有关使用 CodeQL 分析数据流的信息,请参阅“关于数据流分析”。

要查看有关警报的更多信息,拥有写入权限的用户可单击注释中所示的 Show more details(显示更多详情)链接。 这允许您在警报视图中查看工具提供的所有上下文和元数据。 在下例中,您可以查看显示问题的严重性、类型和相关通用缺陷枚举 (CWE) 的标记。 该视图还显示哪个提交引入了问题。

在警报的详细视图中,有些 代码扫描 工具,例如 CodeQL 分析,还包括问题描述和 Show more(显示更多)链接以指导您如何修复代码。

显示更多信息的警报说明和链接

修复拉取请求上的警报

任何对拉取请求具有推送权限的人都可以修复在该拉取请求上已识别的 代码扫描 警报。 如果将更改提交到拉取请求,这将触发拉取请求检查的新运行。 如果您的更改修复了问题,则警报将被关闭,注释将被删除。

忽略拉取请求上的警报

关闭警报的另一种办法是忽略它。 您可以忽略您认为不需要修复的警报。 例如,仅用于测试的代码中有错误,或者修复错误的工作超过改进代码的潜在益处。 如果您对仓库有写入权限,则 Dismiss(忽略)按钮在代码注释和警报摘要中可用。 单击 Dismiss(忽略)时,您将被提示选择关闭警报的原因。

选择忽略警报的原因

从下拉菜单中选择合适的原因很重要,因为这可能会影响到是否继续将查询纳入未来的分析。

如果将 CodeQL 警报作为误报予以忽略,例如,因为代码使用不受支持的净化库,则考虑参与 CodeQL 仓库并改进分析。 有关 CodeQL 的更多信息,请参阅“参与 CodeQL”。

有关忽略警报的更多信息,请参阅“管理仓库的 代码扫描 警报”。

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。