使用 Gemini Code Assist 进行代码定制

有时,您需要跳出思维定式,从 Gemini Code Assist 生成精确的代码建议。它支持多种语言和框架,当您掌握代码建议的定制时,奇迹就会发生。借助它,Gemini 可以了解您链接的整个项目,然后相应地提出所有代码建议,这将有助于未来的编码。

在这里,我们将看到将您的项目与 Gemini Code Assist 链接的步骤,以获得最佳定制输出。这种定制可确保 Gemini 了解您团队的独特模式和编码标准。

了解 Gemini 中的代码定制

代码定制是 Gemini Code Assist 分析您项目的链接存储库以提供更精确和更高级的代码建议的过程。 Gemini 并不提供通用的解决方案,而是了解存储库中的库、API 和依赖项,并相应地调整其建议。

因此,开发人员收到的建议不仅符合他们的框架,而且还提供适合项目特定最佳实践和结构的代码。

此过程消除了手动调用自定义函数、服务或编码约定的需要,使您能够专注于开发而不是样板代码。

Gemini 中的代码定制架构

让我们讨论一下 Gemini 中的代码定制架构 −

  • 通常,Gemini Code Assist 在 Google 提供的云服务(如不同的云工作站和云 shell 编辑器)的支持下工作,并将其与 VSCode 等 IDE 集成。
Gemini Code Assist Services
  • Gemini 根据其训练的数据集提供常规解决方案,给出最常见的故障排除和代码建议,这些建议似乎还不错,但它不会针对您当前的项目进行个性化设置。
  • 为了获得更好的代码建议,您可以将存储库与您的工作环境链接起来并获得更好的结果。
Gemini Code Assist Dataset
  • 当您将您的私有代码存储库与 Gemini 工作的 IDE 环境连接起来时,Gemini 就是这样工作的。
  • 为此,有一个工具可以帮助您,该工具也称为 Developer Connect,它将您的私有存储库与 Gemini 服务连接起来。
  • 存储库可以是 GitHub 存储库、GitLab 存储库或 Developer Connect 支持的任何存储库。

当 Gemini Code Assist 与您的存储库链接时,它会遵循三步架构来提供个性化建议 −

步骤 1:存储库分析

  • Gemini 扫描存储库文件、库和依赖项。
  • 它识别代码库中使用的命名约定、API 和模块等模式。

步骤 2:上下文代码建模

  • Gemini 根据过去的代码使用情况、导入和项目结构构建定制的代码模型。
  • 此模型可帮助 AI 预测开发过程中的下一步。

步骤 3:实时建议

  • 当你编写代码时,Gemini 会提供针对具体项目的建议。
  • 它利用链接存储库的上下文,智能地完成功能或建议优化的解决方案。

有几种编程语言支持这种优化,几乎涵盖了所有流行的语言和框架。一些优化的编程语言是 −

  • C / C++
  • C#
  • Golang
  • Python
  • Java
  • JavaScript
  • Kotlin
  • PHP
  • Rust
  • Typescript

在 Gemini 中自定义代码建议的步骤

以下是如何通过存储库链接自定义代码建议的分步指南 −

步骤 1:连接您的存储库

  • 通过 Gemini 仪表板将您的 GitHub、GitLab 或 Bitbucket 存储库与 Gemini Code Assist 链接。
  • 转到 IDE 中的配置 Gemini 设置您正在使用的版本。
连接您的存储库
  • 之后,您将获得将您的私有存储库(如 Github Repo)链接到您的工作环境的选项。
  • 确保存储库包含项目的依赖项和基本代码模块。

步骤 2:自动分析依赖项

  • 链接后,Gemini 会扫描项目内的库、API 和代码模式。
  • 无需手动设置,Gemini 会构建上下文代码模型。

步骤 3:设置编码首选项(可选)

  • 调整命名约定、缩进或代码样式的设置,以使建议与团队标准保持一致。
  • 示例:指定变量的命名约定,如 camelCase 或类的 PascalCase。

步骤 4:迭代和改进

当您将更改提交到存储库时,Gemini 会不断学习和更新它的建议。

代码建议示例

我们以一些带有框架的编程语言为例来展示代码建议的示例 −

在 Python + Django 中

在存储库链接之前,Gemini 可以提供基本的 Django 建议,如标准视图或模型。但是,一旦您的存储库链接,建议就会变得更加项目感知,适应已在使用的 API 和模式。

在存储库链接之前

# Basic view suggestion
def sample_view(request):
   return HttpResponse("Hello, World!")

存储库链接后

from myproject.serializers import CustomSerializer

def sample_view(request):
   data = CustomSerializer(data=request.data)
   if data.is_valid():
      return JsonResponse(data.data)
   return JsonResponse(data.errors, status=400)

链接存储库后,Gemini 会识别出项目使用 CustomSerializer 并自动建议。这样就无需手动搜索现有代码片段,从而加快开发速度。

Java + Spring Boot

在 Java + Spring Boot 项目中,Gemini 会提供一般建议,但在链接存储库后会提供高级建议。

存储库链接前

public class HelloController {
   @GetMapping("/hello")
   public String sayHello() {
      return "Hello, World!";
   }
}

存储库链接后

@RestController
@RequestMapping("/api")
public class UserController {

   @Autowired
   private UserService userService;

   @GetMapping("/user/{id}")
   public ResponseEntity<User> getUser(@PathVariable Long id) {
      return ResponseEntity.ok(userService.getUserById(id));
   }
}

这里,Gemini 已经了解了你的项目仓库,发现你的项目使用了 UserService,并建议将其直接注入到控制器中。它将生成的代码与项目结构对齐,避免了冗余代码。

JavaScript + Node.js

对于 JavaScript 项目,Gemini 可以为 Node.js 等框架提供智能代码补全。下面是仓库链接如何升级建议的示例。

仓库链接之前

// 基本路线建议
app.get('/hello', (req, res) => {
   res.send('Hello, World!');
});

存储库链接后

// 这是具有自定义中间件和服务的高级建议
const { validateUser } = require('./middlewares/validateUser');
const { userService } = require('./services/userService');

app.get('/user/:id', validateUser, async (req, res) => {
   try {
      const user = await userService.getUserById(req.params.id);
      res.json(user);
   } catch (error) {
      res.status(500).send(error.message);
   }
});

这里,validateUser中间件和userService调用,确保您的代码遵循现有的项目模式。这可以提高代码质量并缩短开发时间。

Gemini 中自定义代码建议的好处

以下是 Gemini 中自定义代码建议的好处 −

  • 加速开发
  • 符合团队标准
  • 最大限度地减少错误和缺陷
  • 与 CI/CD 无缝集成
  • 提高代码可读性和可维护性
  • 减少新开发人员的入职时间
  • 通过实时反馈提高生产力
  • 支持跨团队无缝协作
  • 与版本控制系统顺利集成
  • 在多个框架和语言中保持代码一致性

限制和挑战

让我们讨论一下使用 Gemini Code Assist 自定义代码建议的一些限制和挑战 −

对存储库质量的依赖

如果链接的存储库结构不良或缺乏适当的文档,Gemini 的建议可能会不太有效。

有限的版本功能

这里,仅在带有 Gemini Assist + Cloud Code 扩展的 VS Code 中支持版本 v2.18.0 及更高版本的代码自定义。在 IntelliJ 及其云代码插件中,Gemini 代码自定义在版本 1.1.0 及更高版本中受支持。

有限的链接

此功能正在开发中,Google 为每个项目仅提供一个可以链接的代码存储库索引。您需要更高的配额才能获得更多的代码存储库索引。您可以在此处获取更多信息。

框架复杂性

使用多个框架的项目可能会导致建议不够精确。

VPC 可访问性

代码自定义不允许虚拟私有云可访问性,限制了数据被盗恢复并增加了意外数据丢失威胁。

区域限制

目前,Gemini 的代码自定义仅适用于 asia-southeast1、us-central1 和 europe-west1 等区域的 Developer Connect 连接。

结论

链接您的存储库不仅可以使建议更具相关性,还可以确保更好的代码质量和一致性。因此,您可以始终专注于创造力和解决问题的部分,而不必担心结构方法。