Skip to main content

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

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

谁可以使用此功能?

具有写入访问权限的用户

GitHub Team 或 GitHub Enterprise Cloud

介绍

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

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

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

在您开始之前

  • 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建议的操作注释
调查结果是合法的。单击生成修复并打开拉取请求点击 “生成修复” 会消耗 AI credits。 您可以将多个自动修复添加到同一分支,以便将修复工作归入一个拉取请求中。
该发现不适用。 例如,这可能出现在遗留代码中、属于有意为之的模式,或者只是误报。单击“ 消除”。调查结果被视为已解决,并已从打开的调查结果列表中删除。

在我们的示例中,我们会为 40 个“被覆盖的属性”问题生成自动修复,并创建一个拉取请求。 由于它们遵循同一种模式,因此修复方法也几乎相同。 CI 检查通过后,我们将合并拉取请求。

步骤 4:传达影响

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

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

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

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

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

Troubleshooting

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

结束语

在本教程中,你评估了存储库的质量分数、按严重性和规则确定积压工作优先级、使用自动修复解决了结果,并将结果传达为分数移动。

后续步骤