GitHub Code Quality 分析你的代码,找出质量和覆盖率方面的问题,并提供由 Copilot 提供支持、可一键应用的修复建议。 它在两个位置运行:
- 在拉取请求上, Code Quality 使用确定性 CodeQL 规则检测已知的反模式,并在合并代码之前将发现作为内联注释发布。 如果上传 Cobertura XML 覆盖率报告,则行覆盖率指标会显示更改是维护还是减少覆盖范围。 你可以通过规则集强制执行质量和覆盖率阈值,阻止不满足你的标准的拉取请求,从而避免新增质量债务不断累积。
-
**在默认分支上**,基于规则的扫描识别整个代码库中的现有质量债务,你可以直接应用自动修复或分配给 Copilot cloud agent 来代表你解决。 AI 驱动的分析也在最近更改的文件上运行,标记超出现有规则集的问题,包括尚未覆盖的 CodeQL 查询的语言。
注意
对于拉取请求,Code Quality 仅发布基于 CodeQL 规则的发现结果。 如果你还想要对拉取请求进行 AI 驱动的审查,你可以单独启用 GitHub Copilot code review。 请参阅“关于GitHub Copilot 代码评审”。
用例
下面是 GitHub Code Quality 在实践中的样子。
对于开发人员和团队:
- 开发人员会打开一个拉取请求 ,该请求引入了可靠性或可维护性问题。 Code Quality 发布说明问题的注释,并在合并代码之前提供一键式修复。 开发人员还会看到线覆盖率指标的报告,并且可以一目了然地判断拉取请求是改进还是减少与默认分支相比的覆盖范围。
- 一个团队继承了一个背负着多年积累质量欠债的大型代码库。 Code Quality 扫描默认分支,在仪表板上显示带有自动修复的调查结果,团队将修正工作分配给 Copilot cloud agent 以自动提出修复拉取请求。
- 团队采用 AI 编码助手,并且需要确保生成的代码达到与手写代码相同的标准。 AI 驱动的分析可发现最近更改的文件中那些尚未为其编写基于规则的查询的问题,而 CodeQL 规则则涵盖了定义明确的反模式。
适用于管理员和负责人:
- 工程负责人使用规则集设置覆盖率和质量阈值。 不符合标准的拉取请求会被阻止合并,因此不会累积新的质量或覆盖债务。
- 管理员需要能够查看各个存储库的情况,以满足审计或合规报告的需要。 Code Quality 通过安全概述以及安全工具生成报告,以便他们能够查看整个组织的当前质量状况,审查未解决发现项随时间的变化情况,并识别哪些存储库需要关注。 请参阅“探索组织中的 GitHub 代码质量结果”。
可用性和计费
使用成本由以下因素决定:
- 基于活动提交者的每席位许可证费用。
-
由 Copilot 驱动的自动修复用于拉取请求和默认分支上的发现项,以及对最近合并的代码进行 AI 驱动的检测,这些检测消耗 GitHub AI Credits(无需 Copilot 许可证)。 -
确定性 GitHub Actions 扫描的 CodeQL 分钟数(如果您未使用自托管运行器)。
可选功能(例如将代码质量修复工作委托给 Copilot)需要 Copilot 许可证。
有关详细信息,请参阅“GitHub Code Quality 计费”。
支持的语言
Code Quality 使用以下 CodeQL语言执行基于规则的分析:
- C#
- Go
- Java
- JavaScript
- Python
- Ruby
- TypeScript
Code Quality 还对存储库最近更改的代码执行 AI 驱动的分析,包括超出基于规则的查询所支持的语言。
后续步骤
- 了解如何修复拉取请求上的代码质量发现项。 请参阅“防止默认分支上出现代码质量问题”。