# 提高存储库代码的质量

评估和修正默认分支上检测到的代码质量问题，以便提高代码库的质量。 随着你的进展，你将看到存储库的代码质量分级有所提高。

> \[!NOTE]
> GitHub Code Quality 当前正处于 公共预览版 阶段，并可能会发生变化。
> 在 公共预览版期间，Code Quality 不会计费，尽管 Code Quality 扫描将使用 GitHub Actions 分钟。

## 介绍

本教程将指导你了解如何在 GitHub Code Quality 存储库中查看、确定优先级和修正代码运行状况问题，帮助你系统地减少技术债务、提高可靠性和可维护性，并向利益干系人传达影响。

### 先决条件

* 已经为您的存储库启用Code Quality。 请参阅“[启用 GitHub Code Quality](/zh/code-security/code-quality/how-tos/enable-code-quality)”。
* 如果您是首次启用 GitHub Code Quality ，请在启用后等待几分钟，以确保默认分支的 CodeQL 扫描能够完全完成。

## 1.评估存储库的总体代码运行状况

1. 导航到存储库的 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality** 选项卡，然后在“”<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code-review" aria-label="code review" role="img"><path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path></svg>代码质量下单击 **常规发现**。
2. “常规发现”仪表板上的概述让您立即了解今天默认分支的状态：

   * ```
          **可维护性分级** 反映了死代码、重复、复杂性、缺少文档和未能遵循最佳做法的发现状态和严重性。
     ```
   * ```
          **可靠性分级** 反映了针对代码的正确性、性能、错误处理、并发性和可访问性的结果的存在和严重性。
     ```

   ![Code Quality 的“常规发现”视图中代码质量评级的屏幕截图。](/assets/images/help/code-quality/all-findings-overview-repo.png)

## 2. 确定并确定影响最大的发现优先级

在“常规发现”视图中，您将看到存储库默认分支Code Quality上次扫描结果的列表。 这些发现包括：

* 按 **规则**分组，因此可以查看哪些问题类型对代码库影响最大。
* 分配了 **严重性** 级别（“错误”、“警告”、“注意”）。

### 专注于高严重性发现

使用仪表板 **筛选器** 首先关注最高严重性结果（“错误”），并查看哪些规则生成最多问题。

![“常规发现”视图的仪表板筛选器屏幕截图。](/assets/images/help/code-quality/standard-findings-filters.png)

若要提高存储库的可维护性或可靠性分级，必须解决（修复或消除）该指标的最高严重性级别的所有发现。

例如，若要将存储库的“可靠性”指标从**需要改进**提升到**合格**，需要解决所有影响可靠性的**错误级别的问题**。 如果你有一个或多个错误级别的发现，则评级不能高于“需要改进”。 请参阅“[指标和分级参考](/zh/code-security/code-quality/reference/metrics-and-ratings)”。

## 3. 调查一组发现并了解上下文

确定具有要解决的多个结果的规则后，可以进一步调查以了解根本问题。

1. 单击规则名称即可查看该规则的所有发现的详细信息。

   ![“常规发现”视图中某条规则的屏幕截图。 规则名称以深橙色突出显示。](/assets/images/help/code-quality/click-rule-name.png)

2. 单击“ **显示更多**”，然后查看规则的说明、建议的修补程序、支持代码示例和引用。

   ![显示代码质量规则结果的屏幕截图。 文本“显示更多”以深橙色突出显示。](/assets/images/help/code-quality/click-show-more.png)

## 4.选择修正选项

评估所有突出显示的结果，了解有效性、影响和风险。 若要提高质量评级，需要通过选择修复或消除每个发现来解决它。

### 生成自动修复

如果查找看起来有效且与代码库相关，则可以生成建议的修补程序。

1. 在单个结果的右侧，单击“生成修复方案”。**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copilot" aria-label="copilot" role="img"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>**

2. 仔细审查建议更改的差异，若同意该更改，单击“打开拉取请求”\*\*\*\*。

3. 在“将自动修复提交到分支”对话框中，选择“打开拉取请求”，然后单击“提交更改”\*\*\*\*。

   > \[!TIP]
   > 目前无法为一组发现批量生成自动修复。
   >
   > 如果要使用单个 Pull Request 解决多个发现，请重复上述步骤 1 和 2，然后在“提交自动修复到分支”对话框中，使用为第一个自动修复创建的分支名称，然后选择“打开 Pull Request”并 **提交更改**。
   >
   > 该修复将添加到你分支的现有草稿拉取请求中。

4. 准备就绪后，将拉取请求状态从“草稿”更改为“准备审阅”，并仔细查看建议的更改。 等待所有 CI 检查和自动化测试完成并通过后，再合并拉取请求。

### 忽略发现

如果在代码库的上下文中不相关或不可执行，则可以忽略该检测结果。 常见驳回发现的原因包括：

* 该发现位于不再维护的旧代码中。
* 团队的编码标准中有一个为众所知的例外。
* 这是一个误报，不会构成真正的质量风险。

消除不相关的警报可使质量检查专注于有意义的问题。

1. 若要取消发现，请单击 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield-slash" aria-label="Dismiss" role="img"><path d="M8.533.133a1.75 1.75 0 0 0-1.066 0l-2.091.67a.75.75 0 0 0 .457 1.428l2.09-.67a.25.25 0 0 1 .153 0l5.25 1.68a.25.25 0 0 1 .174.239V7c0 .233-.008.464-.025.694a.75.75 0 1 0 1.495.112c.02-.27.03-.538.03-.806V3.48a1.75 1.75 0 0 0-1.217-1.667L8.533.133ZM1 2.857l-.69-.5a.75.75 0 1 1 .88-1.214l14.5 10.5a.75.75 0 1 1-.88 1.214l-1.282-.928c-.995 1.397-2.553 2.624-4.864 3.608-.425.181-.905.18-1.329 0-2.447-1.042-4.049-2.356-5.032-3.855C1.32 10.182 1 8.566 1 7Zm1.5 1.086V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297.05.02.106.02.153 0 2.127-.905 3.439-1.982 4.237-3.108Z"></path></svg>**。
2. 该发现将从打开的调查结果列表中消失。 你仍然可以从页面顶部的“已消除”选项卡下查看并重新打开已消除的发现。

## 5. 衡量改进并传达影响

修正工作完成后，返回到“”常规发现仪表板，查看更新的可靠性与可维护性指标。

向利益干系人传达影响时，请突出显示：

* “可靠性”或“可维护性”类别的结果数量是否**减少**。
* 可靠性或可维护性分级的任何 **评级更改** 。
* 实现评级变化所满足的要求。 例如，修正所有“警告”级别的发现导致评级从“中等”更改为“良好”。

使用质量评级的改进和发现数量的减少来证明进展。

## 6. 强制实施拉取请求的代码质量标准

如果尚未设置拉取请求的质量阈值，请阻止对代码库所做的任何更改，以减少代码库的运行状况。 请参阅“[为拉取请求设置代码质量阈值](/zh/code-security/code-quality/how-tos/set-pr-thresholds)”。

## 后续步骤

* 通过修复最近更改的文件中的发现，进一步减少技术债务。 请参阅“[使用 AI 提高最近合并代码的质量](/zh/code-security/code-quality/tutorials/improve-recent-merges)”。
* 在<c1>社区讨论</c1>中提供关于<c0>的反馈。