跳至主要内容

评估代码扫描警报

在安全视图中,您可以浏览和评估项目代码中潜在漏洞或错误的警报。

谁可以使用此功能?

拥有**写入**权限的用户

任何拥有仓库读取权限的用户都可以在拉取请求中看到代码扫描注释。更多信息,请参阅“在拉取请求中处理代码扫描警报”。

查看仓库的警报

您需要写入权限才能在**安全**选项卡上查看仓库所有警报的摘要。

默认情况下,代码扫描警报页面已筛选为仅显示仓库默认分支的警报。

  1. 在 GitHub 上,导航到仓库的主页。

  2. 在仓库名称下,单击** 安全**。如果您看不到“安全”选项卡,请选择****下拉菜单,然后单击**安全**。

    Screenshot of a repository header showing the tabs. The "Security" tab is highlighted by a dark orange outline.

  3. 在左侧边栏中,单击 代码扫描.

  4. 或者,使用自由文本搜索框或下拉菜单筛选警报。例如,您可以按用于识别警报的工具进行筛选。

    Screenshot of code scanning alerts page. The search box and filter dropdown menus are outlined in dark orange.

  5. 在“代码扫描”下,单击您要浏览的警报以显示详细的警报页面。警报页面上的状态和详细信息仅反映仓库默认分支上警报的状态,即使警报存在于其他分支中也是如此。您可以在警报页面右侧的**受影响的分支**部分查看非默认分支上警报的状态。如果默认分支中不存在警报,则警报的状态将显示为“在拉取请求中”或“在分支中”,并显示为灰色。

  6. 或者,如果警报突出显示数据流问题,请单击**显示路径**以显示从数据源到使用它的接收器的路径。

    Screenshot of a code scanning alert. The "Show paths" and "Show more" links are outlined in dark orange.

  7. 来自 CodeQL 分析的警报包含对问题的描述。单击**显示更多**以获取有关如何修复代码的指导。

更多信息,请参阅“关于代码扫描警报”。

注意

您可以在工具状态页面上查看代码扫描分析上次运行的时间信息。更多信息,请参阅“关于代码扫描的工具状态页面”。

筛选代码扫描警报

您可以筛选代码扫描警报视图中显示的警报。如果有很多警报,这将非常有用,因为您可以关注特定类型的警报。您可以使用一些预定义的过滤器和一系列关键字来细化显示的警报列表。

当您从下拉列表中选择关键字,或在搜索字段中输入关键字时,只有有结果的值才会显示。这使得更容易避免设置找不到结果的过滤器。

Screenshot of search field in alerts view. The field has "branch:dependabot" and all valid branches with a matching name are shown.

如果您输入多个过滤器,视图将显示与所有这些过滤器匹配的警报。例如,is:closed severity:high branch:main 将仅显示存在于main分支上的已关闭的高严重性警报。例外情况是与 ref 相关的过滤器(refbranchpr):is:open branch:main branch:next 将显示来自main分支和next分支的打开的警报。

请注意,如果您已筛选非默认分支上的警报,但相同的警报存在于默认分支上,则任何给定警报的警报页面仍然只会反映默认分支上警报的状态,即使该状态与非默认分支上的状态冲突也是如此。例如,在branch-x的警报摘要中显示在“打开”列表中的警报,如果该警报已在默认分支上修复,则可能在警报页面上显示“已修复”的状态。您可以在警报页面右侧的**受影响的分支**部分查看已筛选分支的警报状态。

您可以使用-作为前缀来排除带有该标签的结果。例如,-tag:style 仅显示不带有style标签的警报。

仅限于应用程序代码的结果

您可以使用“仅显示应用程序代码中的警报”筛选器或autofilter:true关键词和值来限制结果,只显示应用程序代码中的警报。有关自动标记为非应用程序代码的代码类型的更多信息,请参阅关于代码扫描警报

搜索代码扫描警报

您可以搜索警报列表。如果您存储库中存在大量警报,或者您不知道某个警报的确切名称,这将非常有用。GitHub 会在以下内容中执行全文搜索:

  • 警报名称
  • 警报详情(这还包括默认情况下在显示更多可折叠部分中隐藏的信息)
支持的搜索语法示例结果
单个单词搜索injection返回所有包含单词injection的警报
多个单词搜索sql injection返回所有包含sqlinjection的警报
精确匹配搜索
(使用双引号)
"sql injection"返回所有包含精确短语sql injection的警报
OR 搜索sql OR injection返回所有包含sqlinjection的警报
AND 搜索sql AND injection返回所有同时包含单词sqlinjection的警报

提示

  • 多个单词搜索等同于 OR 搜索。
  • AND 搜索将返回搜索词在警报名称或详情中的任何位置、任何顺序出现的搜索结果。
  1. 在 GitHub 上,导航到仓库的主页。
  2. 在仓库名称下,单击** 安全**。如果您看不到“安全”选项卡,请选择****下拉菜单,然后单击**安全**。
    Screenshot of a repository header showing the tabs. The "Security" tab is highlighted by a dark orange outline.
  3. 在左侧边栏中,单击 代码扫描.
  4. 筛选器下拉菜单的右侧,在全文搜索框中键入要搜索的关键词。
    Screenshot of search field in alerts view. The field has pre-defined filters "is: open branch:main" and free text of "sql or injection" highlighted.
  5. 回车 键。警报列表将包含与您的搜索条件匹配的开放代码扫描警报。

在问题中跟踪代码扫描警报

注意

在问题中跟踪代码扫描警报的功能处于公开预览阶段,可能随时更改。

此功能支持使用 GitHub Actions 原生运行分析,或使用现有 CI/CD 基础设施以及第三方代码扫描工具进行外部运行,但不支持第三方跟踪工具。

要快速创建问题以跟踪特定代码扫描警报的状态,请在代码扫描警报页面上单击要跟踪的警报。在该警报的详细信息页面上,单击创建问题。根据需要自定义自动生成的 Issue,然后单击提交新问题

或者,要在一个现有问题中跟踪代码扫描警报,请将警报的 URL 添加为问题中的任务列表项。有关任务列表的更多信息,请参阅关于任务列表

有关创建问题以跟踪代码扫描警报的更多信息,请参阅在问题中使用任务列表跟踪代码扫描警报

审核对代码扫描警报的响应

您可以使用 GitHub 工具审核针对代码扫描警报采取的操作。更多信息,请参阅审核安全警报

进一步阅读