查看仓库的警报
任何对仓库有读取权限的人都可以查看拉取请求上的 code scanning 注释。 有关详细信息,请参阅“鉴定拉取请求中的代码扫描警报”。
你需要写入权限才能在“安全”选项卡上查看存储库所有警报的摘要。
默认情况下,将筛选代码扫描警报页面,以仅显示存储库默认分支的警报。
-
在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。 1. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。
1. 在左侧边栏中,单击“代码扫描警报”。 -
(可选)使用自由文本搜索框或下拉菜单来筛选警报。 例如,您可以通过用于识别警报的工具进行过滤。
-
在 "Code scanning" 下,单击要探索的警报。 警报页面上的状态和详细信息仅反映存储库默认分支上的警报状态,即使警报存在于其他分支中也是如此。 可以在警报页右侧的“受影响的分支”部分查看非默认分支上的警报状态。 如果默认分支中不存在警报,则警报的状态将显示为“在拉取请求中”或“在分支中”,并将变为灰色。
-
(可选)如果警报突出显示数据流的问题,请单击“显示路径”以显示从数据源到使用它的接收者的路径。
-
来自 CodeQL 分析的警报包括对问题的描述。 单击“显示更多”以获取有关如何修复代码的指导。
有关详细信息,请参阅“关于代码扫描警报”。
注意:对于 CodeQL 的 code scanning 分析,你可以在存储库的 code scanning 警报列表顶部的标头中看到有关最新运行的信息。
例如,您可以看到上次扫描运行的时间,所分析的代码行数与您仓库中的代码行总数的比较, 以及生成的警报总数。
筛选 code scanning 警报
您可以筛选 code scanning 警报视图中显示的警报。 如果存在许多警报,这将非常有用,因为您可以专注于特定类型的警报。 有一些预定义的筛选器和一系列关键字可用于优化显示的警报列表。
从下拉列表中选择关键字时,或者在搜索字段中输入关键字时,仅显示具有结果的值。 这样可以更容易地避免设置没有结果的筛选器。
如果输入多个筛选器,视图将显示与所有这些筛选器匹配的警报。 例如,is:closed severity:high branch:main
仅显示 main
分支上存在的已关闭高严重性警报。 例外情况是与 refs 相关的筛选器(ref
、branch
和 pr
):is:open branch:main branch:next
将显示来自 main
分支和 next
分支的开放式警报。
请注意,如果你已筛选掉非默认分支上的警报,但默认分支上存在相同的警报,则任何给定警报的警报页仍将仅反映默认分支上的警报状态,即使该状态与非默认分支的状态冲突也是如此。 例如,如果 branch-x
的警报摘要中的“未解决”列表中显示的警报已在默认分支上修复,该警报可能会在警报页上显示“已修复”状态。 可在警报页右侧的“受影响的分支”部分查看筛选的分支的警报状态。
你可以在 tag
筛选器前面加上 -
以排除带有该标记的结果。 例如,-tag:style
仅显示没有 style
标记。
将结果限制为仅应用程序代码
可以使用“仅应用程序代码中的警报”筛选器或 autofilter:true
关键字和值,将结果限于应用程序代码中的警报。 有关详细信息,请参阅上面的“关于不在应用程序代码中的警报的标签”,详细了解不是应用程序代码的代码类型。
搜索 code scanning 警报
您可以搜索警报列表。 如果仓库中存在大量警报,或者您不知道警报的确切名称,这很有用。 GitHub Enterprise Server 可执行以下自由文本搜索:
- 警报的名称
- 警报详细信息(这也包括默认情况下在“显示更多”可折叠部分中隐藏的信息)
支持的搜索 | 语法示例 | 结果 |
---|---|---|
单字搜索 | injection | 返回包含单词 injection 的所有警报 |
多字词搜索 | sql injection | 返回包含 sql 或 injection 的所有警报 |
精确匹配搜索 (使用双引号) | "sql injection" | 返回包含确切短语 sql injection 的所有警报 |
OR 搜索 | sql OR injection | 返回包含 sql 或 injection 的所有警报 |
AND 搜索 | sql AND injection | 返回包含单词 sql 和 injection 的所有警报 |
提示:
- 多字词搜索等同于 OR 搜索。
- AND 搜索将返回以任何顺序在警报名称或详细信息中的“任意位置”找到搜索词的结果。
- 在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。 1. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。
1. 在左侧边栏中,单击“代码扫描警报”。 - 在“筛选器”下拉菜单右侧,在自由文本搜索框中键入关键字以进行搜索。
- 按 return。 警报列表将包含与搜索条件匹配的未处理 code scanning 警报。
修复警报
任何对仓库具有写入权限的人都可以通过提交对代码的更正来修复警报。 如果仓库已安排对拉取请求运行 code scanning,则最好通过拉取请求提交您的更正。 这将触发对更改的 code scanning 分析,并测试您的修复是否会带来任何新的问题。 有关详细信息,请参阅“自定义代码扫描”和“鉴定拉取请求中的代码扫描警报”。
如果你有存储库的写入权限,则可以通过查看警报摘要并单击“已关闭”来查看已修复的警报。 有关详细信息,请参阅“查看存储库的警报”。 “Closed(已关闭)”列表显示已修复的警报和用户已忽略的警报。
可使用自由文本搜索或筛选器显示警报子集,然后依次将所有匹配的警报标记为已关闭。
警报只能在一个分支中修复。 您可以在警报摘要上使用“Branch(分支)”过滤器检查警报是否是在特定分支中修复的。
请注意,如果你已筛选掉非默认分支上的警报,但默认分支上存在相同的警报,则任何给定警报的警报页仍将仅反映默认分支上的警报状态,即使该状态与非默认分支的状态冲突也是如此。 例如,如果 branch-x
的警报摘要中的“未解决”列表中显示的警报已在默认分支上修复,该警报可能会在警报页上显示“已修复”状态。 可在警报页右侧的“受影响的分支”部分查看筛选的分支的警报状态。
注意: 如果使用多个配置运行 code scanning,则有时警报会有多个分析源。 除非定期运行所有配置,否则可能会看到在一个分析源中已修复但在另一个分析源中未修复的警报。 有关详细信息,请参阅“关于代码扫描警报”。
有两种方法可以关闭警报。 您可以修复代码中的问题,也可以忽略警报。
取消显示警报是关闭你认为不需要修复的警报的一种方法。 例如,仅用于测试的代码中有错误,或者修复错误的工作超过改进代码的潜在益处。 你可以从代码中的 code scanning 注释取消显示警报,或者从“安全”选项卡中的摘要列表取消显示警报。
当您忽略警报时:
- 它在所有分支中被忽略。
- 警报将从项目的当前警报数中删除。
- 警报被移动到警报摘要中的“Closed(已关闭)”列表,需要时您可以在其中重新打开它。
- 会记录关闭警报的原因。
- (可选)可对关闭操作进行注释以记录警报关闭操作的上下文。
- code scanning 下次运行时,相同的代码将不会生成警报。
若要关闭警报:
-
在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。 1. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。
1. 在左侧边栏中,单击“代码扫描警报”。 -
如果要忽略警报,请务必先了解警报,以便选择正确的忽略原因。 单击要了解的警报。
-
查看警报,然后单击“消除警报”并选择或键入关闭警报的原因。
从下拉菜单中选择合适的原因很重要,因为这可能会影响到是否继续将查询纳入未来的分析。 (可选)可对关闭操作进行注释,记录警报关闭情况的上下文。 关闭操作注释将添加到警报时间线,可在审核和报告期间用作理由。 可使用代码扫描 REST API 检索或设置注释。 注释包含在alerts/{alert_number}
终结点的dismissed_comment
中。 有关详细信息,请参阅“代码扫描”。如果将 CodeQL 警报作为误报予以忽略,例如因为代码使用了不受支持的清理库,请考虑参与 CodeQL 存储库并改进分析。 有关 CodeQL 的详细信息,请参阅“参与 CodeQL”。
一次忽略多个警报
如果项目有多个由于相同原因要忽略的警报,您可以从警报摘要中批量忽略它们。 通常,您需要过滤列表,然后忽略所有匹配的警报。 例如,您可能想要忽略项目中所有已标记为特定通用缺陷枚举 (CWE) 漏洞的当前警报。
审核对 code scanning 警报的响应
可以使用 GitHub 工具审核为响应code scanning警报而执行的操作。 有关详细信息,请参阅“审核安全警报”。