Skip to main content
Skip to content

关于代码扫描的自动修复

Autofix 会生成针对 code scanning 告警的潜在修复建议,帮助你修正现有漏洞。

谁可以使用此功能?

Agentic Autofix 的资格要求比 Copilot Autofix 更严格,并且不适用于使用 Enterprise Managed Users 的企业中用户拥有的存储库。 有关详细信息,请参阅 关于代码扫描的自动修复。

Copilot Autofix的code scanning可用于以下存储库类型:

  • 公共存储库位于 GitHub.com
  • 在GitHub Team上启用了GitHub Code Security的组织拥有的存储库

的组织拥有的存储库

有关符合条件的产品的详细信息,请参阅 关于GitHub高级安全性。

GitHub 为 code scanning 警报提供两种独立的自动修复体验:agentic autofix 和 Copilot Autofix。 两者都使用大型语言模型(LLM)、来自代码库的数据和 code scanning 分析来生成潜在的代码更改和解释。 但是,它们具有不同的工作流、结果、访问要求和使用情况。

这两种类型的自动修复是什么?

Agentic Autofix 并 Copilot Autofix 解决不同的问题:

  • 当您想要使用agentic autofix端到端地为您调查并修复一个或多个警报时,请使用Copilot。
  • 当你想为某个警报获取一条建议的代码更改,并自行审查和应用时,使用 Copilot Autofix。

使用 agentic autofix 时,可以向 Copilot 分配一个或多个警报。 它探索代码库、生成修补程序并验证更改。 然后,它会打开一个包含建议的修复方案的草稿拉取请求(PR)。

借助 Copilot Autofix,GitHub 可为一个受支持的警报生成单个建议的代码更改。 可以使用此建议自行创建拉取请求。

自动修复在何处可用?

访问这两个功能的方式不同。 对于组织拥有的存储库上的 agentic autofix,组织所有者或安全经理必须启用它。 如果组织属于企业,企业所有者或安全经理也必须批准此操作。 默认情况下,组织级启用会为符合条件的存储库启用该功能,但存储库管理员可以选择退出,或在更高级别设置允许时重新启用它。

对于个人帐户拥有的合格公共存储库,存储库管理员可以直接启用 agentic autofix 。 无需 Copilot 许可证即可使用 agentic autofix,但它不适用于 Enterprise Managed Users 拥有的存储库。 有关详细信息,请参阅“管理对代码扫描智能自动修复的访问权限”。

相比之下,Copilot Autofix默认情况下为任何使用 CodeQL 的存储库启用,除非管理员将其禁用。 它适用于 GitHub.com 上的所有公共存储库。 它还可用于拥有许可证 GitHub Code Security的组织和企业拥有的内部或专用存储库。 与 agentic autofix 不同,Copilot Autofix 适用于由 Enterprise Managed Users 拥有的存储库。

选择自动修复类型

使用成本也是决定使用哪项功能的因素之一。 每个agentic autofix代理会话消耗AI credits和GitHub Actions分钟,而Copilot Autofix建议的修复不会消耗AI credits。

如果未为存储库启用 agentic autofix,仍可使用 Copilot Autofix 为支持的警报生成建议的修补程序。

使用 agentic autofix

在您希望agentic autofix调查一个或多个警报并准备拉取请求草稿时,使用Copilot。 可以从存储库积压工作或安全活动中分配 agentic autofix 警报。 每个任务都会启动一个代理会话。 会话将探索受影响的文件之外的代码库,然后生成并验证修补程序。 它将打开包含更改的拉取请求。 请参阅“解决代码扫描警报”。

请记住以下几点:

  • 有关在组织、企业或存储库级别启用 agentic autofix 的详细信息,请参阅 管理对代码扫描智能自动修复的访问权限。
  • Agentic Autofix 消耗代码安全 AI 额度和 GitHub Actions 分钟数。 请参阅“GitHub Advanced Security 许可证计费”。
  • Copilot 使用在生成修补程序时应用的自定义说明。 请参阅“为 Copilot 添加自定义说明”。
  • Agentic Autofix 按“尽力而为”原则提供。 Copilot通过使用CodeQL查询套件重新运行code scanning来验证修复。 它无法确认来自自定义 CodeQL 查询、security-extendedCodeQL 查询套件或第三方工具中的 code scanning 警报的修复情况。

在合并拉取请求之前,请始终查看并测试生成的更改。

使用 Copilot Autofix

Copilot Autofix 的工作方式相同,无论存储库对 code scanning 使用默认设置还是高级设置。 没有单独的步骤可以启用它:使用 code scanning 启用 CodeQL 即可。 请参阅“配置代码扫描的默认设置”。

Copilot Autofix 也是 GitHub Code Quality 不可或缺的一部分,即使已针对 code scanning 结果禁用,也会继续对代码质量结果运行。

企业、组织和存储库级别的管理员可以禁用 Copilot Autofix。 设置向下级联:如果企业所有者禁止该功能,则企业中没有组织或存储库可以启用该功能,如果组织所有者禁用该功能,则组织中的存储库无法重新启用该功能。 若要在给定级别还原该功能,该级别的管理员或更高级别的管理员必须撤销该设置。 若要了解如何在每个级别进行管理 Copilot Autofix ,请参阅 禁用用于代码扫描的 Copilot Autofix。