Skip to main content
Skip to content

提高存储库的代码质量分数

确定并解决构成最大风险的发现,提高存储库的代码质量分数,并防止新债务累积。

谁可以使用此功能?

具有写入访问权限的用户

GitHub Team 或 GitHub Enterprise Cloud

介绍

在本教程中,您将处理默认分支上积压的 Code Quality 调查结果,按风险确定优先级,解决影响最大的调查结果,并将结果传达给利益干系人。 学习内容:

  • 如何阅读仪表板并了解分数的含义。
  • 如何确定修复优先级,并决定是应用自动修复、委托给 Copilot cloud agent,还是忽略某项发现。
  • 如何传达修正工作的影响。
  • 可以采取哪些额外措施来防止积压工作再次增加。

这是一次引导式演练,因此它更注重理解而非速度。 有关生成自动修复或忽略调查结果的基本步骤,请参阅配套操作指南:修复代码库待办事项中的代码质量问题。

在您开始之前

  • Code Quality 是在你拥有或维护的存储库上启用的。 请参阅“启用 GitHub Code Quality”。
  • 如果您最近启用了 Code Quality,请等待几分钟,以完成默认分支的初始 CodeQL 扫描。

在本教程中,我们将使用一个正在运行的示例:一个存储库,该存储库的仪表板当前显示“可靠性:差”和“可维护性:公平”的分数,用于代码质量。

步骤 1:评估当前分数

  1. 请导航到您的存储库中的** Security and quality** 选项卡。
  2. 单击以展开 代码质量,然后单击 常规发现。

在这里,你将看到可靠性和****可维护性的分数。

Code Quality 的“常规发现”视图中代码质量分数的屏幕截图。

这些分数是根据您默认分支中的发现结果计算得出的:

Metric定义示例发现
Reliability评估代码是否正确、可预测且一致地执行其预期函数。 可靠代码不受 bug 影响,可安全地处理错误,并在正常和边缘情况下按预期运行。性能、并发性、错误处理、正确性的问题
****可维护性评估理解、修改和扩展代码随时间推移是多么容易。 可维护的代码遵循最佳做法,避免不必要的复杂性,并组织方便将来的更改和协作。未使用/死代码、可读性、复杂性、冲突命名、问题分离差

每个分数都取决于该指标下当前仍存在的问题中严重级别最高的一项。 若要提高分数,您必须清除当前处于最高严重级别的所有发现项。

在我们的示例中,可靠性之所以为“差”,是因为仍然存在影响可靠性的错误级别发现项。 警告和备注值得解决,但在清除错误之前,它们无法移动分数。

步骤 2:按规则读取列表,并专注于影响最大的发现

在 常规发现 视图中,结果按 规则分组。 这对于理解很有用,因为具有许多发现的单条规则可能会反映一个重复的编码习惯。 一旦你理解了其中一个问题,就可能更容易理解针对所有此类问题提出的自动修复建议,从而使修复工作更快,并且更便于批量审查。

此外,查找那些会让你的某项评分凑齐某个严重性等级的规则——如果清除某条规则后,影响可靠性的最后一个“错误”也随之消除,你的评分就会立即提高。

在我们的示例中,一条“覆盖的属性”规则在 128 个调查结果中占了 40 个,并且所有这 40 个都是错误级别的调查结果。 清除此项将移除所有影响可靠性的错误级别问题,这样会使我们的评分升至下一档。

步骤 3:解决发现问题

选择规则后,决定如何处理每个发现:

Assessment建议的操作注释
一个发现是合理的。单击“分配到 Copilot”。
Copilot 打开一个拉取请求,其中包含针对所选发现项的修补程序。 分配给 Copilot 会消耗 AI credits。
同一规则的多个发现是合法的。在页面上选择最多 25 个发现项,然后单击“分配给 Copilot”。
Copilot 打开一个拉取请求,其中包含针对所选发现的问题的修复。 分配给 Copilot 会消耗 AI credits
某项发现不适用。 例如,它可能存在于遗留代码中、是一种有意的模式,或者是误报。单击“ 消除”。调查结果被视为已解决,并已从打开的调查结果列表中删除。

在我们的示例中,我们将 40 个“覆盖属性”结果分成每批最多 25 个,分配给 Copilot。 我们查看生成的拉取请求,并在 CI 检查通过后将其合并。

步骤 4:传达影响

合并修复内容后,返回到“常规发现”视图并截取以下内容:

  • 已更改的分数。 例如, 可靠性:差→公平。
  • 解锁它所需的条件。 例如,所有影响可靠性的错误级别问题现已全部解决。
  • 公开调查结果的减少。 例如,从 128 降至 88。

在我们的示例中,清除“被覆盖的属性”规则后,可靠性会从 较差 提升到 一般——这是团队首次可以明确指出的评分提升。

这与代码健康状况的其他部分有何关联

如果新的拉取请求引入相同的问题,那么今天解决的每个发现都可能会再次出现。 为防止积压工作再次生成:

Troubleshooting

  • 合并修复后,分数没有移动。 该指标当前最高严重级别的至少一项调查结果仍然处于打开状态。
  • 扫描尚未重新运行。 每次向默认分支推送后,Code Quality 扫描都会自动运行。 等待几分钟,直到工作流完成。

结束语

在本教程中,您评估了存储库的质量分数,按严重性和规则对积压工作进行了优先级排序,使用自动修复解决了发现的问题,并以分数变动的形式传达了结果。

后续步骤