跳至主要内容

配置 GitHub Copilot 代码审查的编码规范

学习如何使用自定义编码规范自定义 Copilot 代码审查。

注意

自定义编码规范仅限于 Copilot 代码审查公开预览版中选定的参与者使用,并且仅作为 GitHub Copilot Enterprise 订阅的一部分提供。

关于编码规范

您可以使用自然语言编写的自定义编码规范来自定义 Copilot 代码审查。有关 Copilot 代码审查的更多信息,请参阅“使用 GitHub Copilot 代码审查”。

使用编码规范,Copilot 可以根据您组织的特定编码风格和最佳实践提供反馈。

由于 Copilot 代码审查由大型语言模型提供支持,因此它可以帮助执行您的代码分析器或静态分析工具未涵盖的编码规范。

编码规范在仓库级别配置。每个仓库最多可以创建和启用 6 个编码规范。

注意

  • 编码规范仅适用于 Copilot 执行的代码审查。这些规范不影响 Copilot 代码补全建议或 Copilot 聊天回复中建议的代码。
  • 编码规范仅适用于 Copilot 执行的代码审查。这些规范不会影响 Copilot 代码补全建议,也不会影响 Copilot 聊天回复中建议的代码。

编码规范的注意事项

  • 使用简单、清晰和简洁的语言来描述您的编码规范。
  • 尽可能具体地说明 Copilot 应该查找的内容,即您想要或不想要在代码中看到的内容。
  • 查看下面的“编码规范示例”以获得一些灵感。
  • 请勿尝试使用编码规范来执行代码分析器或静态分析工具可以涵盖的样式规范。
  • 请勿使用模棱两可或可能被多种方式解释的措辞。
  • 请勿尝试将多个不同的想法放入单个编码规范中。

创建编码规范

  1. 在 GitHub 上,导航到仓库的主页。

  2. 在您的仓库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后单击设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,单击 Copilot,然后代码审查

  4. 单击创建规范

  5. 在“名称”下,为编码规范命名。

  6. 在“描述”下,提供编码规范的描述,最多 600 个字符。Copilot 将以此来了解您的编码风格,并决定何时留下注释。

    您编写描述的方式会很大程度上影响 Copilot 生成的注释的质量。有关编写有效编码规范的帮助,请参阅上面的“编码规范的注意事项”和下面的“编码规范示例”。

  7. 您可以选择通过单击添加文件路径并添加路径模式来将编码规范限制为特定的文件类型或路径。

    您可以使用fnmatch语法来定义要定位的路径,其中*作为通配符来匹配任何字符串。

    由于 GitHub 对File.fnmatch语法使用File::FNM_PATHNAME标志,因此*通配符不匹配目录分隔符 (/)。例如,qa/*将匹配所有以qa/开头且包含单个斜杠的分支,但不匹配qa/foo/bar。您可以使用qa/**/*qa后包含任意数量的斜杠,这将匹配例如qa/foo/bar/foobar/hello-world。您还可以使用qa**/**/*扩展qa字符串,使规则更具包容性。

    有关语法选项的更多信息,请参阅fnmatch 文档

  8. 测试您的编码规范以确保其按预期工作。

    1. 单击添加示例
    2. 添加您自己的示例,或按 生成代码示例来自动根据您的标题和描述生成代码示例。
    3. 单击保存以保存代码示例。
    4. 通过按下 运行来测试编码规范与您的示例。
  9. 保存您的编码规范并启用它,方法是单击保存规范

使用编码规范运行审查

当您请求 Copilot 进行审查时,它将自动使用仓库中启用的编码规范来审查您的代码。有关更多信息,请参阅“使用 GitHub Copilot 代码审查”。

基于编码规范生成的注释将包含一条消息,突出显示其来源。

Screenshot of a comment produced from a custom coding guideline.

编码规范示例

示例 1:避免使用魔术数字

标题: 避免使用魔术数字

描述: 不要在代码中使用魔术数字。数字应定义为具有有意义名称的常量或变量。

路径模式: **/*.py

示例 2:不要在 SQL 查询中使用 SELECT *

标题: 不要在 SQL 查询中使用 `SELECT *`

描述: 不要在 SQL 查询中使用 `SELECT *`。始终指定要选择的列。允许使用 `COUNT(*)`。

路径模式: 无(适用于所有文件类型,因为 SQL 查询可能嵌入在代码中)。

示例 3:对 HTTP 请求使用 fetch

标题: 对 HTTP 请求使用 `fetch`

描述: 对 HTTP 请求使用 `fetch`,而不是 `axios` 或 `superagent` 或其他库。

路径模式: **/*.ts**/*.js**/*.jsx**/*.tsx

示例 4:始终使用当前环境标记指标

标题: 始终使用当前环境标记指标

描述: 发出指标时,始终包含一个带有当前环境的 `env` 标签,例如 `env:prod` 或 `env:dev`。

路径模式: */*.go*/*.java