解锁 AI 编程新体验:GitHub Copilot 让 VS Code 更智能!

56 阅读8分钟

1. 为什么选择 Copilot?

GitHub Copilot 是由 GitHub 和 OpenAI 共同开发的人工智能代码辅助工具,俗称 "副驾驶"。作为专门为编程打造的 AI 工具,它与 VS Code 深度集成,能够帮助开发者进行:

  • 代码自动补全:根据当前代码上下文,提供实时代码建议。

  • 根据注释生成代码:通过自然语言描述功能,Copilot 可自动生成对应的代码。

  • 代码解释(Explain) :帮助开发者理解复杂代码片段。

  • 生成测试代码(Generate Tests) :自动为已有函数生成单元测试,提高代码覆盖率。

  • 生成注释和文档(Generate Docs) :基于代码逻辑自动生成清晰的注释,提高可读性。

  • 代码修复(Fix) :自动优化代码,修复潜在问题。

  • Code Review & Comments:Copilot 可以辅助进行代码审查,提供优化建议,并帮助补充缺少的注释,使代码更加清晰可维护。

再给你一条推荐理由,在业务线已经用过一段时间,当时还是部门花钱买的付费版,不过现在Copilot免费了,这为我们提供了一个尝试的机会!

Copilot 可以极大地提升开发效率,减少重复性工作,同时确保代码的规范性和一致性。

2. 为什么有了 GPT 还需要 Copilot?

我们已经可以直接向 ChatGPT 提问,为何你仍然需要Copilot?

2.1. 深度集成 VS Code,减少上下文切换

Copilot 以插件的形式直接嵌入 VS Code,无需离开代码编写环境就能获取 AI 帮助,避免来回切换窗口、复制粘贴代码的繁琐操作。相比之下,使用 GPT 需要在浏览器和编辑器之间切换,影响开发流畅度。

2.2. 专为编程设计,理解代码上下文

Copilot 基于当前项目的代码上下文生成代码,可以提供符合项目风格和已有代码逻辑的建议。例如:

  • 在 MCU 项目中,Copilot 可以基于已有的驱动代码自动补全新的外设初始化代码。
  • Copilot 生成的代码风格会更贴合项目,减少手动调整的时间,这一点应该是过往很多人调侃的生成代码1分钟,debug1小时

相比之下,GPT 生成的代码虽然强大,但往往不理解项目的具体上下文,代码移植性较差。

2.3. 高效代

码编写体验,减少手动输入

使用 GPT 时,通常需要完整描述问题,而 Copilot 只需你输入几行代码或注释,它就能智能补全,提高开发效率。例如,在 VS Code 中输入 // 初始化 SPI 设备,Copilot 便能自动生成完整的初始化代码,减少手动编写的工作量。

总结:Copilot 并非 GPT 的替代品,而是专为开发者设计的 AI 助手,能够更好地融入实际编码流程,减少开发成本,提高编程效率与质量。

3. 如何安装?

在 VS Code 中安装 Copilot 插件,只需要在插件安装中,在搜索框输入 GitHub Copilot,找到如下2个插件安装即可

image.png

插件安装好后,需要注册登录,登录方式是通过github账号授权登录。成功之后就能看到如下chat  UI界面。

image.png

4. VSCode 中 Copilot如何使用?

总的来说,使用有两大区域块:

  • chat区域,直接在聊天框中输入你的问题(PS: 你可以选中你的代码行,这样问问题的时候,它会根据你的代码行生成更可靠的答案)
  • 编辑器文件中(比如:自动提示、注释生成代码等等)

我们的所有使用场景,其实都是在上面两大区域完成的。理论上而言,chat区域可以完成所有功能,只是编辑器文件中,更友好点而言。通常而言,chat区域生成的内容会多一点,全面点。

下面我们具体使用点

4.1 代码自动补全

当你在 VS Code 中编写代码时,Copilot 会自动给出代码建议。 比如这种最简单的,我写了一个注释它自动的给你提示,提示的内容是灰色的,您可以按下Tab键接受建议, 通过Esc键丢弃提示。

image.png

方式2:  另外一种更好的方式是,此时按下**ctrl + enter**输出十种代码实现,哪种好,接受那种就行。 

image.png

他的强大可不仅仅是根据注释来给出建议代码,他是可以根据你项目中编写的任意代码来推测你想写的代码,这个取决于你的习惯。总之你和他配合的越多,你们的默契就会越好。

4.2. 代码解释(Explain)

VS Code 集成的 Copilot 提供 Explain(代码解释)  功能,可以快速分析代码,帮助开发者理解复杂逻辑。例如,你可以右键代码,选择 Copilot -> Explain,让 Copilot 解释代码的功能。

image.png

4.3. 自动代码修复(Fix)

Copilot 的 Fix 功能可以自动检测并修复代码中的潜在问题,帮助开发者更高效地改进代码质量。这个功能在提高代码性能、可读性以及符合最佳实践方面尤为重要。

Copilot 不仅能够优化代码,还能自动发现代码中的常见错误,并给出修复建议。例如,它能够识别未初始化的变量、潜在的内存泄漏等问题,并提出修复方案。

示例:假设你在处理指针时没有正确释放内存,Copilot 会提醒你并提供解决方案。

    void process_data(int* data) {
        // 使用指针进行处理,但没有释放内存
        // 可能导致内存泄漏
        data = new int[100];
        // 做一些处理
    }

你可以选中代码,右键选择 Copilot -> Fix,让 Copilot 帮你发现问题并给出修复建议,如果你接受,点击**Accept**就会自动生成修复后的代码

image.png

Copilot 的 Fix 功能是一个强大的工具,可以帮助开发者自动修复代码中的潜在问题、优化代码性能、提升代码质量。通过智能分析,Copilot 不仅能提升开发效率,还能确保代码更符合最佳实践,减少错误和重复劳动。

4.4. 代码审查与评论(Review & Comments)

4.4.1. 自动化代码审查

Copilot 能够自动分析你写的代码,查找潜在的错误、代码规范问题以及性能优化点。通过对代码进行智能检查,Copilot 能够指出常见的编码错误、逻辑漏洞和潜在的 bug,甚至是可能导致性能问题的代码块。

示例: 假设你写了一段有潜在内存泄漏的问题的代码,Copilot 会自动提示你并提供修复建议。

void process_data() {
    int* ptr = new int[100];  // 忘记释放内存
    // 处理数据...
}

你可以选中代码,右键选择 Copilot -> Review and Comment,让 Copilot 帮Review代码并给出修复建议,这个是不是就很符合我们在gerrit上做Review的习惯。

image.png

4.4.2 代码优化建议

除了审查潜在错误和添加评论,Copilot 还会根据最佳实践提供优化建议。这些建议包括使用更高效的算法、减少不必要的计算、改进代码结构等

示例: 处理一个大型数组时,使用了一个嵌套循环来查找元素的最小值,这种方法效率较低。Copilot 会建议使用更简洁和高效的方案。

int find_minimum(int arr[], int size) {
    int min_value = arr[0];
    for (int i = 0; i < size; i++) {
        for (int j = i + 1; j < size; j++) {
            if (arr[j] < min_value) {
                min_value = arr[j];
            }
        }
    }
    return min_value;
}

Copilot会做出Comments,算法复杂度为 O(n^2),可以优化为 O(n)。

image.png

优化代码如下

image.png

Review and Comment功能是我最喜欢的功能之一,它能够根据代码的上下文和算法复杂度,提供高效的替代方案。通过减少不必要的计算、使用更合适的数据结构或改进算法,Copilot 帮助开发者提升代码的质量与执行效率。

4.5 生成测试代码(Generate Test)

4.5.1. 基于现有函数生成单元测试

Copilot 能够根据你编写的函数自动推测其功能,并生成相应的单元测试代码。通过这种方式,你无需手动编写每个函数的测试用例,Copilot 会自动为你生成符合标准的测试代码框架。

示例:如下函数,Copilot 会根据函数的输入和输出自动生成相应的测试代码。

image.png

4.5.2 择指定的Test框架生成单元测试,比如我选择用的是Google Test

image.png

5.总结:

GitHub Copilot 是一款强大的 AI 编程助手,它通过深度集成到 VS Code,帮助开发者提高工作效率。它可以自动补全代码、生成注释、修复问题、生成测试代码等,大大减少了重复劳动,提升了代码质量。与 GPT 相比,Copilot 更专注于编程,可以根据项目上下文提供更精准的帮助。

如果你还没有尝试 Copilot,它是一个提高开发效率、优化代码质量的好工具。现在免费使用,值得一试!