# 解决拉取请求中的阻塞

识别并解决拉取请求中的代码质量块，以便合并更改。

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

## 了解拉取请求被阻止的原因

存储库管理员可以使用 GitHub Code Quality 设置代码质量入口，实现可维护性和可靠性。 当你创建拉取请求时，扫描会自动运行，以根据这些标准检查更改。

如果你的拉取请求引入了未达到所需质量阈值的代码，在“检查”部分的拉取请求底部，你将看到一个合并阻止横幅：“合并被阻止：已检测到代码质量问题。”

![拉取请求的“检查”部分中合并块横幅的屏幕截图。](/assets/images/help/code-quality/code-quality-merge-block.png)

这些检查有助于保持健康、可维护的代码库，并防止技术债务累积。

## 查看扫描结果及其严重性级别

扫描结果作为拉取请求的注释报告，由 `github-code-quality[bot]` 留下。 每个注释对应于更改中检测到的特定代码质量问题。

注释按严重性（**错误**、 **警告**、 **注意**）进行标记。 若要详细了解严重性级别的含义，请参阅 [严重性级别](/zh/enterprise-cloud@latest/code-security/code-quality/reference/metrics-and-ratings#severity-levels)。

## 确定哪些问题正在阻碍您的拉取请求

存储库管理员设置的质量关卡定义了将阻止合并的最低严重级别。

合并区块横幅可以指定严重性级别的最低值。 在合并拉取请求之前，必须解决该严重级别或更高级别的所有发现结果。

![拉取请求的“检查”部分中合并块横幅的屏幕截图。](/assets/images/help/code-quality/merge-block-warnings.png)

> \[!NOTE]
> 如果在合并块横幅中看不到定义的严重性级别，这意味着存储库使用的是最严格的代码质量阈值，这要求在合并之前解决 **所有发现** 。

## 解决或消除每个找出的问题

要取消阻止拉取请求，你需要通过决定是**修复**代码中的问题还是**取消**注释来解决每个必需的发现结果。

### 利用 Copilot自动修复 和 Copilot云代理 修复发现

#### Copilot自动修复

对拉取请求讨论的注释包括建议的 **自动修复** ，你可以直接将其提交到你的拉取请求。 仔细检查建议的自动修复，从逻辑、安全性和样式方面进行评估，然后单击 **提交建议**。

无需Copilot许可证来应用这些建议。

#### Copilot云代理

或者，如果你有 Copilot 许可证，则可以将修正工作委托给 Copilot云代理。 对提到 `@Copilot` 的拉取请求进行评论，并请求 Copilot 修复检测到的问题。

![显示调用 Copilot 云智能体的 PR 注释的屏幕截图。](/assets/images/help/code-quality/invoke-cloud-agent.png)

```
          Copilot 使用眼睛表情符号 (👀) 响应你的批注，启动新的代理会话，并打开具有必要修复的拉取请求。
```

可以跟踪 Copilot云代理'工作：

* 在拉取请求中，摘要会随着工作推进而更新。
* 使用[智能体页](https://github.com/copilot/agents?ref_product=copilot\&ref_type=engagement\&ref_style=text)或会话日志，请参阅 [跟踪 GitHub Copilot 的会话](/zh/enterprise-cloud@latest/copilot/how-tos/use-copilot-agents/cloud-agent/track-copilot-sessions)。

你需要一个Copilot许可证来调用Copilot云代理。 <br> <a href="https://github.com/features/copilot/plans?ref_product=copilot&ref_type=purchase&ref_style=button" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline"> <span>注册 Copilot</span><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-label="link external icon" role="img"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a>

### 驳回调查结果

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

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

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

## 验证是否满足要求

若要查看是否满足代码质量要求，请查看拉取请求底部的“检查”部分。 合并块横幅应该不再存在，你应该能够像往常一样合并更改。

## 后续步骤

通过修复最近更改的文件中的发现来减少技术债务。 请参阅“[使用 AI 提高最近合并代码的质量](/zh/enterprise-cloud@latest/code-security/code-quality/tutorials/improve-recent-merges)”。