Skip to main content
我们经常发布文档更新,此页面的翻译可能仍在进行中。 有关最新信息,请访问英语文档

关于代码扫描警报

了解不同类型的代码扫描警报以及有助于了解每个警报突出显示的问题的信息。

Code scanning 可用于 GitHub Enterprise Server 中的组织拥有的存储库。 此功能需要 GitHub Advanced Security 的许可证。 有关详细信息,请参阅“关于 GitHub Advanced Security”。

注意:网站管理员必须为 your GitHub Enterprise Server instance 启用 code scanning,然后你才能使用此功能。 有关详细信息,请参阅“为设备配置 code scanning”。

关于 code scanning 中的警报

可以配置 code scanning,以使用默认 CodeQL 分析、第三方分析或多种类型的分析来检查存储库中的代码。 分析完成后,生成的警报将并排显示在仓库的安全视图中。 第三方工具或自定义查询的结果可能不包括您在 GitHub 的默认 CodeQL 分析所检测的警报中看到的所有属性。 有关详细信息,请参阅“为存储库配置 code scanning”。

默认情况下, code scanning 定期在默认分支和拉取请求中分析您的代码。 有关管理拉取请求警报的信息,请参阅“会审拉取请求中的 code scanning 警报”。

关于警报详细信息

每个警报都会高亮显示代码的问题以及识别该问题的工具名称。 你可以看到触发警报的代码行以及警报的属性,例如警报严重性、安全严重性和问题的性质。 警报还会告知该问题第一次被引入的时间。 对于由 CodeQL 分析确定的警报,您还会看到如何解决问题的信息。

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

code scanning 中的警报示例

如果使用 CodeQL 配置 code scanning,则还可以在代码中发现数据流问题。 数据流分析将查找代码中的潜在安全问题,例如:不安全地使用数据、将危险参数传递给函数以及泄漏敏感信息。

当 code scanning 报告数据流警报时,GitHub 将显示数据在代码中如何移动。 Code scanning 可用于识别泄露敏感信息的代码区域,以及可能成为恶意用户攻击切入点的代码区域。

关于严重性级别

警报严重性级别可能为 ErrorWarningNote

如果将 code scanning 作为拉取请求检查启用,检测到严重性为 error 的任何结果时,检查都将失败。 可以指定代码扫描警报的哪个严重性级别会导致检查失败。 有关详细信息,请参阅“自定义 code scanning”。

关于安全严重性级别

Code scanning 显示安全查询生成的警报的安全严重性级别。 安全严重性级别可以是 CriticalHighMediumLow

为计算警报的安全严重性,我们将使用常见漏洞评分系统 (CVSS) 数据。 CVSS 是一个开放框架,用于传达软件漏洞的特征和严重性,通常由其他安全产品用来为警报评分。 若要详细了解如何计算严重性级别,请参阅此博客文章

默认情况下,安全严重性为 CriticalHigh 的任何 code scanning 结果都会导致检查失败。 可以指定 code scanning 结果的哪个安全严重性级别会导致检查失败。 有关详细信息,请参阅“自定义 code scanning”。

关于分析源

可以使用不同的工具和针对代码的不同语言或区域,在存储库上运行多个代码分析配置。 代码扫描的每个配置都是它生成的所有警报的分析源。 例如,与外部生成并通过代码扫描 API 上传的警报相比,使用带有 GitHub Actions 的默认 CodeQL 分析生成的警报具有不同的分析源。

如果使用多个配置来分析文件,同一查询检测到的任何问题都将报告为具有多个分析源的警报。 如果警报有多个分析源,在警报页面右侧的“受影响的分支”部分中,任何相关的分支旁都会出现一个 图标。 可以将鼠标悬停在 图标上,以查看每个分析源的名称以及该分析源警报的状态。 还可以在警报页面的时间线中查看每个分析源的警报出现时间的历史记录。 如果警报只有一个分析源,则警报页上不会显示任何有关分析源的信息。

具有多个分析源的代码扫描警报

注意:有时,代码扫描警报显示为固定的一个分析源,但仍可用于第二个分析源。 可通过重新运行第二个代码扫描配置以更新该分析源的警报状态,来解决此问题。

关于应用程序代码中未找到的警报的标签

GitHub Enterprise Server 向应用程序代码中找不到的警报分配类别标签。 标签与警报的位置相关。

  • Generated:生成过程生成的代码
  • Test:测试代码
  • Library:库或第三方代码
  • Documentation:文档

Code scanning 按文件路径对文件进行分类。 无法手动对源文件进行分类。

下面是库代码中标记为已发生的警报的 code scanning 警报列表中的一个示例。

列表中的代码扫描库警报

在警报页上,可以看到文件路径标记为库代码(Library 标签)。

代码扫描库警报详细信息