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 分析的警报包括对问题的描述。 单击“显示更多”以获取有关如何修复代码的指导。

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

注意:可以在工具状态页上查看有关 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 的所有警报

提示:

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

跟踪议题中的 code scanning 警报

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

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

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

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

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

审核对 code scanning 警报的响应

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

延伸阅读