Skip to main content

评估存储库的代码扫描警报

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

谁可以使用此功能?

具有写入访问权限的用户

任何对仓库有读取权限的人都可以查看拉取请求上的 code scanning 注释。 有关详细信息,请参阅“鉴定拉取请求中的代码扫描警报”。

查看仓库的警报

你需要写入权限才能在“安全”选项卡上查看存储库所有警报的摘要。

默认情况下,将筛选 code scanning 警报页面,以仅显示存储库默认分支的警报。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。

    存储库标头的屏幕截图,其中显示了选项卡。 “安全性”选项卡以深橙色边框突出显示。

  3. 在左侧边栏中,单击 Code scanning

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

    code scanning 警报页面的屏幕截图。 搜索框和筛选器下拉菜单以深橙色边框显示。

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

  6. (可选)如果警报突出显示数据流的问题,请单击“显示路径”以显示从数据源到使用它的接收者的路径。

    code scanning 警报的屏幕截图。 “显示路径”和“显示更多”链接以深橙色标出。

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

有关详细信息,请参阅“关于代码扫描警报”。

Note

可以在工具状态页上查看有关 code scanning 分析上次运行时间的信息。 有关详细信息,请参阅“关于代码扫描的工具状态页”。

筛选 code scanning 警报

您可以筛选 code scanning 警报视图中显示的警报。 如果存在许多警报,这将非常有用,因为您可以专注于特定类型的警报。 有一些预定义的筛选器和一系列关键字可用于优化显示的警报列表。

从下拉列表中选择关键字时,或者在搜索字段中输入关键字时,仅显示具有结果的值。 这样可以更容易地避免设置没有结果的筛选器。

警报视图中搜索字段的屏幕截图。 该字段具有“branch:dependabot”,并且会显示具有匹配名称的所有有效分支。

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

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

你可以在 tag 筛选器前面加上 - 以排除带有该标记的结果。 例如,-tag:style 仅显示没有 style 标记的警报。

将结果限制为仅应用程序代码

可以使用“仅应用程序代码中的警报”筛选器或 autofilter:true 关键字和值,将结果限于应用程序代码中的警报。 有关自动标记为非应用程序代码的代码类型的详细信息,请参阅“关于代码扫描警报”。

搜索 code scanning 警报

您可以搜索警报列表。 如果仓库中存在大量警报,或者您不知道警报的确切名称,这很有用。 GitHub 可执行以下自由文本搜索:

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

Tip

  • 多字词搜索等同于 OR 搜索。
  • AND 搜索将返回以任何顺序在警报名称或详细信息中的“任意位置”找到搜索词的结果。
  1. 在 GitHub 上,导航到存储库的主页面。
  2. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。
    存储库标头的屏幕截图,其中显示了选项卡。 “安全性”选项卡以深橙色边框突出显示。
  3. 在左侧边栏中,单击 Code scanning
  4. 在“筛选器”下拉菜单右侧,在自由文本搜索框中键入关键字以进行搜索。
    警报视图中搜索字段的屏幕截图。 该字段具有预定义的筛选器“is: open branch:main”,并突出显示了“sql 或注入”的自由文本
  5. return。 警报列表将包含与搜索条件匹配的未处理 code scanning 警报。

跟踪议题中的 code scanning 警报

Note

问题中 code scanning 警报的跟踪目前为 公共预览版,可能随时更改。

此功能支持使用 GitHub Actions 在本机运行分析,或使用现有 CI/CD 基础结构以及第三方 code scanning 工具在外部运行分析,但不支持第三方跟踪工具。

要快速创建问题来跟踪特定 code scanning 警报的状态,请在 code scanning 警报页上,单击要跟踪的警报。在该警报的详细页面上,单击“创建问题****”。 根据需要自定义自动生成的问题,然后单击“提交新问题****”。

或者,要跟踪已有问题中的 code scanning 警报,请将警报的 URL 添加为问题中的任务列表项。 有关任务列表的详细信息,请参阅“关于任务列表”。

有关创建问题以跟踪 code scanning 警报的详细信息,请参阅“使用任务列表跟踪问题中的代码扫描警报”。

审核对 code scanning 警报的响应

可以使用 GitHub 工具审核为响应code scanning警报而执行的操作。 有关详细信息,请参阅“审核安全警报”。

其他阅读材料