Help us learn about your current experience with the documentation. Take the survey.

合并请求中的 GitLab Duo

This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.

GitLab 旨在在合并请求的生命周期中提供上下文相关的信息。

通过总结代码更改生成描述

当你创建或编辑合并请求时,使用 GitLab Duo 合并请求摘要来创建合并请求描述。

  1. 创建新的合并请求

  2. 描述字段中,将光标放在要插入描述的位置。

  3. 在文本区域上方的工具栏中,选择总结代码更改 tanuki-ai )。

    Above the text area, a toolbar displays a “Summarize code changes” button.

描述会插入到光标所在的位置。

观看概述

issue 443236 中提供此功能的反馈。

数据使用:源分支头部与目标分支之间的更改差异会发送给大语言模型。

让 GitLab Duo 审查你的代码

当你的合并请求准备好进行审查时,使用 GitLab Duo 代码审查来执行初步审查:

  1. 在左侧边栏中,选择搜索或跳转并找到你的项目。
  2. 选择代码 > 合并请求并找到你的合并请求。
  3. 在评论框中,输入快速操作 /assign_reviewer @GitLabDuo,或将 GitLab Duo 指定为审查者。

在 issue 517386 中提供此功能的反馈。

数据使用:当你使用此功能时,以下数据会发送给大语言模型:

  • 已更改文件的内容
  • 文件名
  • 合并请求标题
  • 合并请求描述

在审查中与 GitLab Duo 交互

你可以在评论中提及 @GitLabDuo 来与 GitLab Duo 交互。你可以对其审查评论提出后续问题,或在合并请求的任何讨论线程中提问。

与 GitLab Duo 的交互可以帮助你在改进合并请求时提高建议和反馈的质量。

GitLab Duo 的自动审查

GitLab Duo 的自动审查确保项目中的所有合并请求都获得初步审查。 合并请求创建后,GitLab Duo 会对其进行审查,除非:

  • 它被标记为草稿。要让 GitLab Duo 审查合并请求,请将其标记为就绪。
  • 它不包含任何更改。要让 GitLab Duo 审查合并请求,请向其添加更改。

先决条件:

要启用 @GitLabDuo 自动审查合并请求:

  1. 在左侧边栏中,选择搜索或跳转并找到你的项目。
  2. 选择设置 > 合并请求
  3. GitLab Duo 代码审查部分,选择启用 GitLab Duo 的自动审查
  4. 选择保存更改

自定义 GitLab Duo 代码审查的说明

此功能的可用性由功能标志控制。 有关更多信息,请查看历史记录。

GitLab Duo 代码审查可以帮助确保项目中的代码审查标准一致。 定义文件的 glob 模式,并为匹配该模式的文件创建自定义说明。例如,仅在 Ruby 文件上强制执行 Ruby 风格约定,在 Go 文件上执行 Go 风格约定。GitLab Duo 会将你的自定义说明附加到其标准审查标准中。

要配置自定义说明:

  1. 在仓库的根目录中,如果尚不存在,请创建一个 .gitlab/duo 目录。
  2. .gitlab/duo 目录中,创建一个名为 mr-review-instructions.yaml 的文件。
  3. 使用以下格式添加你的自定义说明:
instructions:
  - name: <instruction_group_name>
    fileFilters:
      - <glob_pattern_1>
      - <glob_pattern_2>
      - !<exclude_pattern>  # 排除匹配此模式的文件
    instructions: |
      <your_custom_review_instructions>

例如:

instructions:
  - name: Ruby Style Guide
    fileFilters:
      - "*.rb"
      - "lib/**/*.rb"
      - "!spec/**/*.rb"  # 排除测试文件
    instructions: |
      1. 确保所有方法都有适当的文档
      2. 遵循 Ruby 风格指南约定
      3. 哈希键优先使用符号而非字符串

  - name: TypeScript Source Files
    fileFilters:
      - "**/*.ts"
      - "!**/*.test.ts"  # 排除测试文件
      - "!**/*.spec.ts"  # 排除规范文件
    instructions: |
      1. 确保适当的 TypeScript 类型(避免使用 'any')
      2. 遵循命名约定
      3. 为复杂函数添加文档

  - name: All Files Except Tests
    fileFilters:
      - "!**/*.test.*"   # 排除所有测试文件
      - "!**/*.spec.*"   # 排除所有规范文件
      - "!test/**/*"     # 排除测试目录
      - "!spec/**/*"     # 排除规范目录
    instructions: |
      1. 遵循一致的代码风格
      2. 为复杂逻辑添加有意义的注释
      3. 确保适当的错误处理

  - name: Test Coverage
    fileFilters:
      - "spec/**/*_spec.rb"
    instructions: |
      1. 测试正常路径和边界情况
      2. 包含错误场景
      3. 使用共享示例来减少重复

自定义的代码审查评论

当 GitLab Duo 代码审查根据你的自定义说明生成代码审查评论时,它们遵循以下格式:

根据 '[instruction_name]' 中的自定义说明:[具体反馈]

例如:

根据 'Ruby Style Guide' 中的自定义说明:此方法应有适当的文档说明其目的和参数。

instruction_name 值对应于你的 .gitlab/duo/mr-review-instructions.yaml 文件中的 name 属性。标准的 GitLab Duo 评论不使用此引用格式。

总结代码审查

当你完成对合并请求的审查并准备提交你的审查时,使用 GitLab Duo 代码审查摘要来生成你的评论摘要。

  1. 在左侧边栏中,选择搜索或跳转并找到你的项目。
  2. 选择代码 > 合并请求并找到你想要审查的合并请求。
  3. 当你准备提交审查时,选择完成审查
  4. 选择添加摘要

摘要会显示在评论框中。你可以在提交审查之前编辑和完善摘要。

观看概述

issue 408991 中提供此实验性功能的反馈。

数据使用:当你使用此功能时,以下数据会发送给大语言模型:

  • 草稿评论的文本

生成合并提交消息

  • Tier: Premium, Ultimate
  • Add-on: GitLab Duo Enterprise, GitLab Duo with Amazon Q
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
  • LLM: Anthropic Claude 4.0 Sonnet
  • LLM for Amazon Q: Amazon Q Developer
  • Available on GitLab Duo with self-hosted models: Yes

在准备合并你的合并请求时,使用 GitLab Duo 合并提交消息生成来编辑建议的合并提交消息。

  1. 在左侧边栏中,选择搜索或跳转并找到你的项目。
  2. 选择代码 > 合并请求并找到你的合并请求。
  3. 在合并小部件上,选择编辑提交消息复选框。
  4. 选择生成提交消息
  5. 查看提供的提交消息,并选择插入将其添加到提交中。

观看概述

数据使用:当你使用此功能时,以下数据会发送给大语言模型:

  • 文件内容
  • 文件名

相关主题