# 在GitHub Copilot实施中维护代码库标准

使用规则集、安全功能和有效培训控制企业代码。

大多数企业都知道 AI 编码工具可以带来的生产力优势。 但是，许多人担心公司中的不当使用（如恶意提示或开发人员接受 AI 建议而不审查）将导致其代码库的标准遭到入侵。

可以通过设置 GitHub 环境和工作文化来缓解这些风险，以便进行有效的治理。
GitHub Copilot 的一个主要好处是，它内置于 GitHub 平台，该平台已经包含一系列用于企业级代码治理的功能。

## 要求拉取请求和评审

开发人员和不良参与者永远无法单方面应用未经审查的 AI 建议或代理直接应用于敏感代码库。 在将代码合并到生产代码库及其他重要分支之前，应要求通过**已批准的拉取请求**。

为此，请创建规则集：

1. 标识包含要保护的代码库的组织或存储库，并向其 **应用自定义属性** 。 这样，就可以在规则集中轻松定位这些资源。 请参阅“[管理组织中存储库的自定义属性](/zh/enterprise-cloud@latest/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization)”或“[管理组织的自定义属性](/zh/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/managing-custom-properties-for-organizations)”。

   或者，可以手动将这些受保护的资源添加到规则集，或基于命名约定将其作为目标。

2. 为企业创建分支规则集。 请参阅“[使用规则集在企业中强制实施代码治理](/zh/enterprise-cloud@latest/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-code-governance#creating-a-branch-or-tag-ruleset)”。

   * 至少启用“**合并前需要拉取请求**”和“**阻止强制推送**”规则。 在“需要拉取请求”规则下，确保至少要求一次批准。
   * 如果需要，请启用其他规则。 例如，如果担心恶意行为者劫持拉取请求，请确保在推送新提交时**取消过期的拉取请求批准**。

3. 鼓励存储库管理员为存储库中的特定文件设置 CODEOWNERS 文件。 当修改这些文件时，这会自动请求代码所有者的评审。

   然后，可以返回到规则集并启用 **要求代码所有者审查** 规则。

4. 鼓励组织所有者和存储库管理员创建更具体的规则集，因为他们可能更了解自己的代码的要求。

   这些规则集会补充你在企业级定义的基线，但不会覆盖该基线。

## 2.测试代码

良好的 DevOps 做法可确保在合并和部署代码之前自动测试代码，最大限度地减少错误进入默认分支并在生产环境中出现的风险。

1. 启用 GitHub Actions 或其他 CI/CD 系统。
2. 鼓励开发人员为所有功能编写测试，并将测试集成到 GitHub Actions 工作流中。
3. 鼓励组织所有者或存储库所有者创建规则集，并将重要的工作流添加到“要求工作流在合并前通过”规则。

## 3.扫描代码是否存在漏洞

```
          Copilot 旨在避免将漏洞引入您的代码库。 例如，系统会自动扫描通过 Copilot云代理 创建的代码来查找易受攻击的模式和机密，例如 API 密钥。
```

但是，最好定期扫描所有代码中是否存在漏洞和机密，并防止开发人员首先引入漏洞。

1. 首先，对组织应用并强制实施基本 **安全配置** 。 这是安全功能的启用设置的集合。 我们建议包括 code scanning、secret scanning 和敏感信息推送保护。 请参阅“[删除自定义安全配置](/zh/enterprise-cloud@latest/code-security/how-tos/secure-at-scale/configure-organization-security/establish-complete-coverage/creating-a-custom-security-configuration#creating-a-secret-protection-and-code-security-configuration)”。
2. 了解需求的详细信息时，请在存储库级别创建其他自定义配置或应用精细设置。
3. 若要对拉取请求强制执行 code scanning ，请返回到规则集并启用 **“需要 code scanning 结果** ”规则。

## 4. 为 Copilot 创建指南

若要首先提高Copilot建议的质量，应创建自定义说明。 这些说明将上下文添加到所有提示，这些提示指示 Copilot 遵循公司的编码标准。

1. 若要建立良好的基线， **请在组织级别创建自定义说明**。 这些标准可以是可能适用于任何存储库的高级标准。 但是，请注意，这些说明仅适用于 GitHub 网站。 请参阅“[为 GitHub Copilot 添加组织自定义指令](/zh/enterprise-cloud@latest/copilot/how-tos/configure-custom-instructions/add-organization-instructions)”。
2. 有关更完整的覆盖范围，请鼓励开发人员和存储库管理员 **为特定存储库编写自定义说明**。 这些适用于比组织说明更多的对象，并可以更详细地描述每个项目及其要求。 请参阅“[为GitHub Copilot添加存储库自定义说明](/zh/enterprise-cloud@latest/copilot/how-tos/configure-custom-instructions/add-repository-instructions)”。

## 5. 鼓励最佳做法

有了强大的防护措施，开发人员应该已经能够有效地使用 AI。 但是，必须就 AI 工具提供培训，并创建鼓励最佳做法的文化，而不仅仅是强制实施。

1. 传达治理设置和公司对开发人员应如何使用 Copilot的期望。 例如，如果应全面审查所有代理工作，请确保建立并传达此过程。
2. 创建载入资源，例如内部文档或视频。 将现有资源如 [使用 GitHub Copilot 的最佳做法](/zh/enterprise-cloud@latest/copilot/using-github-copilot/best-practices-for-using-github-copilot) 和 [GitHub Copilot Chat 指南](/zh/enterprise-cloud@latest/copilot/copilot-chat-cookbook) 作为起点进行分享。
3. 提供持续的培训和支持，例如研讨会。 在成功的推出中，许多公司确定了“冠军”，他们可以培训其他人如何有效地使用 Copilot 。

## 6. 规划最差的情况

即使有最严格的防护措施，也始终有可能合并易受攻击或容易出错的代码，而不管开发人员使用的是 AI 工具。

若要为这些方案做好准备，应规划如何解决问题，并与开发人员沟通此计划。 例如：

1. 回滚错误的拉取请求并回退部署。
2. 创建一个讨论文章，分析出了什么问题以及如何在未来避免它。
3. 检查审核日志，以查找规则集绕过、权限错误或对治理设置的更改。

## 7.检查代码质量

如果你对治理模型有信心，但仍担心 Copilot 随着时间的推移会降低代码库的质量，则可以在推出过程中衡量这一点。 如果启用，GitHub Code Quality 将提供关于存储库代码健康状况的指标。 请参阅“[关于GitHub代码质量](/zh/enterprise-cloud@latest/code-security/concepts/about-code-quality)”。

## 后续步骤

了解企业如何使用审核日志监视配置设置和许可证分配的更改。 请参阅“[查看 GitHub Copilot 的审核日志](/zh/enterprise-cloud@latest/copilot/how-tos/administer-copilot/manage-for-organization/review-activity/review-audit-logs)”。