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

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

准备工作

  1. 使用 Enterprise 订阅设置 Gemini Code Assist
  2. 使用 Enterprise 订阅设置 Gemini Code Assist 代码自定义

如何使用代码自定义

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

表单 如何触发 备注和资源

自然语言对话

在 IDE 中的 Gemini Code Assist 对话窗口中输入自然语言提示。

请考虑以下事项:

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

如需了解详情,请参阅与 Gemini Code Assist 对话

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

请考虑以下事项:

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

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

用例和提示示例

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

使用场景 值得尝试的功能
编写新代码

请在 IDE 或 Gemini Code Assist 对话中尝试以下操作以生成代码:

  • 生成使用您代码库中已有术语的代码。
  • 粘贴您的代码(例如函数签名或包含 TODO 注释的代码),然后让 Gemini Code Assist 用代码补全或替换 TODO 注释。添加带有上下文说明的注释。

您可以在 Gemini Code Assist 对话中使用以下提示生成代码:

  • “编写一个主函数,在其中创建到 DATABASE 的连接。添加健康检查。”
  • “按照以下结构编写 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 中发现错误?”
  • “如果收到此错误消息,您将如何修复函数 FUNCTION_NAME?”
学习和初始配置

在 Gemini Code Assist 对话中尝试以下提示:

  • “将此代码拆分为多个部分,并使用我们的代码库对每个部分进行说明。”
  • “展示如何调用函数 FUNCTION_NAME?”
  • “如何在 ENVIRONMENT_NAME 环境中运行 main 函数?”
  • “为了提高代码的性能,我们可以进行哪些关键的技术改进?”
  • “请告诉我如何实现 FUNCTION_OR_CLASS_NAME 以实现更好的结果,并添加该特定元素的具体内容”--例如,“请告诉我如何实现函数 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 模型生成具有不确定性。如果您对回答不满意,再次执行同一提示可能会获得更好的结果。
  • 请注意,生成单元测试通常效果更好,如果您在本地打开文件,然后通过对话请求为此文件或特定函数生成单元测试。