使用 Gemini Code Assist 代码自定义功能

本文档介绍了如何使用 Gemini Code Assist 代码自定义,并提供了一些最佳实践。借助此功能,您可以接收代码建议,这些建议会参考贵组织的内部库、专用 API 和编码样式。

准备工作

  1. 设置 Gemini Code Assist,并订阅企业版
  2. 订阅企业版后,设置 Gemini Code Assist 代码自定义

如何使用代码自定义

下表列出了使用 Gemini Code Assist 代码自定义的方法:

表单 如何触发 备注和资源

自然语言聊天

在 IDE 的 Gemini Code Assist 聊天中输入自然语言提示。

请考虑以下事项:

  • 聊天记录不可用。避免多步查询。
  • 您可以要求提供有关来源的更多详细信息,包括指向特定来源的链接。
  • 如果您在聊天中发送消息时突出显示或选择代码,Gemini Code Assist 会使用该代码来改进代码自定义和聊天质量。

如需了解详情,请参阅与 Gemini Code Assist 聊天

生成代码 在 IDE 的快捷选择栏中,无论是否选择了代码,请按 Command+Enter(在 macOS 上)或 Control+Enter 如需了解详情,请参阅使用提示生成代码
转换代码 在 IDE 的快捷选择栏中,无论是否选择了代码,请输入 /fix 如需了解详情,请参阅使用提示生成代码
自动补全 系统会自动触发代码自定义,并根据您编写的内容提供建议。

请考虑以下事项:

  • 代码补全需要达到一定的置信度才能提出建议。确保提供大量代码,以便检索相关代码段。
  • 代码补全功能会检查您是否拥有所需的库,以便使用函数的某些元素。

如需了解详情,请参阅获取代码补全

使用场景和提示示例

下表提供了有关在特定用例中使用代码自定义的指导和示例:

使用场景 值得尝试的操作
编写新代码

请尝试执行以下操作,在 IDE 或 Gemini Code Assist 聊天中生成代码:

  • 生成的代码会使用代码库中已提及的术语。
  • 粘贴您的代码(例如函数签名或带有 TODO 注释的代码),然后让 Gemini Code Assist 填充 TODO 注释或将其替换为代码。添加带有背景说明的评论。

尝试在 Gemini Code Assist 聊天中按照以下提示生成代码:

  • “编写一个用于创建 DATABASE 连接的主函数。Include health checks."
  • “按照以下结构编写 FUNCTION_OR_CLASSEXPLAIN_STRUCTURE。”

生成一些代码后,尝试使用后续提示来改进代码:

  • “请尝试使用 /fix 命令调整生成的代码,例如语法错误。”
  • “添加缺少的导入项。”
  • “在聊天生成的代码上尝试 /fix。”
清理、简化和重构代码

在 Gemini Code Assist 聊天中,试用以下提示:

  • “您能合并此文件中的 IMPORTS_VARIABLES_OR_NOTE_EXPORTED_FUNCTIONS 吗?”
  • “如何简化 FUNCTION_NAME 函数?”
  • “您能否将 FUNCTION_NAME_1FUNCTION_NAME_2 合并为一个函数?”
  • “您能否在 FUNCTION_NAME 中内嵌一些变量?”
  • “您能否简化函数 FUNCTION_NAME 中的变量命名?”
可读性

在 Gemini Code Assist 聊天中,试用以下提示:

  • “尽可能使用更少的代码行编写函数 FUNCTION_NAME。”
  • “为函数 FUNCTION_NAME 添加注释。”
  • “移除了函数 FUNCTION_NAME 中不必要的空格。”
  • “将函数 FUNCTION_NAME 的格式设置为与代码的其余部分类似。”
代码审核

在 Gemini Code Assist 聊天中,试用以下提示:

  • “将代码拆分为多个部分,并使用我们的代码库说明每个部分。”
  • “是否有变量或关键字可以更简洁、更一目了然?”
  • “您能否提供此代码的 REPOSITORY_NAME_PACKAGE_MODULE 上下文中实用的代码?”
  • “您对函数 FUNCTION_NAME 有何看法?”
调试

在 Gemini Code Assist 聊天中,试用以下提示:

  • “我在尝试执行 X/添加 Y 时收到错误消息。为什么?”
  • “您能否发现函数 FUNCTION_NAME 中的错误?”
  • “Given this error message, how would you fix the function FUNCTION_NAME?”
学习和新手入门

在 Gemini Code Assist 聊天中,试用以下提示:

  • “将此代码拆分为多个部分,并使用我们的代码库对每个部分进行说明。”
  • “Show how to call function FUNCTION_NAME?”
  • “如何在 ENVIRONMENT_NAME 环境中运行 main 函数?”
  • “为了提高此代码的性能,我们可以进行哪些关键的技术改进?”
  • “Show me the implementation of FUNCTION_OR_CLASS_NAME to achieve better results and add what that specific element is”(请向我展示 FUNCTION_OR_CLASS_NAME 的实现以取得更好的结果,并添加该特定元素的说明)- 例如,“Show me the implementation of function foo where foo is the name of the function”(请向我展示函数 foo 的实现,其中 foo 是函数的名称)。
迁移

在 Gemini Code Assist 聊天中,试用以下提示:

  • “请告诉我如何将 FILE_NAMELANGUAGE_1 迁移到 LANGUAGE_2”,例如,从 Go 迁移到 Python。
  • “给定代码库 REPOSITORY_NAME 中的函数 FUNCTION_NAME,请为我找到语言 LANGUAGE_NAME 中可供使用的等效函数。”

尝试使用提示来完成以下基于聊天或代码生成的转换工作流:

  1. “将已在 LANGUAGE_1 中编写的 FILENAME_COMPONENT 代码重构并迁移到 LANGUAGE_2”,例如,从 Go 迁移到 Python。
  2. 迁移部分代码后,请尝试以下操作:
    • 选择较小的分块,然后使用 /fix 将其转换为所需状态。
    • 请尝试以下提示:
      • “是否有可以改进的地方?”
      • “告诉我可能存在的痛点。”
      • “如果迁移正确,您将如何测试此代码?”
生成文档

在 Gemini Code Assist 聊天中,试用以下提示:

  • “总结软件包或文件夹 X 中的代码,并为前五种重要方法提供文档。”
  • “为 FUNCTION_OR_CLASS_NAME 生成文档。”
  • “缩减文档内容,同时保留关键信息。”
单元测试生成

在 Gemini Code Assist 聊天中,试用以下提示:

  • “为 FILENAME 生成单元测试。”
  • “为 FUNCTION_NAME 函数添加最相关的测试用例。”
  • “移除您认为没有太大价值的测试用例。”

最佳做法

  • 使用相关的变量和函数名称或代码段。这有助于您在自定义代码时参考最相关的代码示例。
  • 使用您要扩缩的索引仓库,并避免添加已废弃的功能。代码自定义有助于扩展到整个代码库中的代码样式、模式、代码语义、知识和实现。不适合扩展的代码库示例包括已废弃的功能、生成的代码和旧版实现。
  • 对于代码检索用例,请使用代码生成功能,而不是代码补全功能。使用“使用 FUNCTION_NAME 的定义生成完全相同的函数”或“生成 FUNCTION_NAME 的完全相同实现”等语言提示。
  • 在要检索的代码的文件中添加包含或导入,以提高 Gemini 的上下文感知能力。
  • 针对每个提示仅执行一项操作。例如,如果您想检索代码并在新函数中实现此代码,请按照以下步骤操作,并在两个提示中执行这些步骤。
  • 对于您希望获得的不仅仅是代码的使用情形(例如代码说明、迁移计划或错误说明),请使用代码自定义功能进行聊天,在这种情况下,您可以结合上下文与 Gemini 进行对话。
  • 请注意,AI 模型生成具有不确定性。如果您对回答不满意,可以再次执行相同的问题,以获得更好的结果。
  • 请注意,生成单元测试通常效果更好,如果您在本地打开文件,然后通过聊天请求为此文件或特定函数生成单元测试,效果会更好。