5,630
社区成员




当您有效订阅该服务时,GitHub Copilot Chat 现在可在Visual Studio和Visual Studio Cod e中使用。Copilot Chat 是您的 AI 结对编程器,可让您通过聊天界面以纯文本语言完成编程任务,例如理解代码段、生成测试用例和生成代码。
本博客文章将重点介绍在 Visual Studio 中通过 C++ 使用 Copilot 聊天功能的技巧,但 Visual Studio Code 中也提供了相同的功能,并将在以后的博客文章中介绍。此外,在以后的帖子中,我们将深入研究客户报告的各种 C++ 场景。
您可以通过Visual Studio 文档了解有关 Copilot Chat 扩展的更多信息。
下载 GitHub Copilot 聊天
要了解有关在 Visual Studio 中访问 GitHub Copilot Chat 的更多信息,请查看这些说明。您需要订阅GitHub Copilot for individuals 或 GitHub Copilot for Business。您还需要安装Copilot和Copilot Chat扩展程序,分别用于自动完成式建议和基于聊天的功能。
您可以使用新的 Copilot Chat 功能来处理现有的 C++ 代码。要打开聊天窗口,请导航到View > GitHub Copilot Chat或右键单击代码中的任意位置并选择Ask Copilot。
通过 / 命令执行操作
在聊天窗口中,您可以使用/符号列出要在代码库上执行的命令。可用命令的完整列表可以在此处找到,或者当您在聊天窗口中键入/时,命令列表将自动填充可用命令。
例如,您可以使用/explain获取所需函数或文件的代码说明。您还可以使用/generate要求 Copilot Chat 生成特定的代码片段。
通过#号添加文件上下文
大型语言模型 (LLM) 在某个时间点对公共存储库数据进行训练,并且对当前代码库一无所知。您可以使用#命令指定您希望 Copilot Chat 包含的上下文,并帮助 Copilot Chat 提供上下文相关的答案。例如,您可以在 Copilot Chat 提示中内联指定#file:FIleName.cpp ,以便它查看指定的文件。输入 # 符号后,所有文件名或选择都会填充以进行选择。
通过选择特定上下文,您可以向 Copilot Chat 提供更多信息,而无需复制/粘贴代码,并确保您在适用时收到最相关的答案。Copilot Chat 将始终指示哪些文件作为上下文包含在提示下的“参考”下。例如,默认情况下,在没有文件规范的情况下,我的代码不会发送任何引用。
然后,一旦指定了某个文件,您就可以在“引用”弹出窗口中看到代码引用。
正如您将看到的,Copilot Chat 可以帮助您作为 C++ 开发人员成为真正的 AI 结对程序员,帮助您解决以下问题,从而更加专注于手头的任务:
请记住,虽然 GitHub Copilot Chat 是软件开发人员开始执行多种不同任务的绝佳工具,但它由 AI 提供支持,因此可能会出现意外和错误。请务必验证您的场景中提供的任何生成的代码或建议。
Copilot Chat 可以改进您现有的 C++ 代码,因为您可以要求它提示,例如使您的代码更具可读性或简化现有代码。
这里有一些 C++ 代码(这里链接的起始存储库)创建了一个 Calculator 类并具有加、减、乘和除运算。这段代码并不像想象的那么简单,并且创建了一些过多的变量。您可以突出显示该部分,然后右键单击询问 Copilot 来为您简化此代码。Copilot Chat 将采用突出显示部分中的上下文,为您的项目提出更好的 C++ 代码。由于 Copilot Chat 作为结对程序员运行,因此 Visual Studio 将提供差异视图,允许您接受、修改或取消 Copilot Chat 提出的更改。
Copilot Chat 简化了一些代码,如 GIF 所示。
Copilot Chat 还可以帮助您修复功能。例如,此 C++ 代码存在一些问题。首先,除以零会返回零,这不太准确。相反,您可能希望它返回错误,例如 Not-A-Number (NaN)。因此,您可以要求 Copilot Chat 重写代码,使其返回 NaN 并将其插入到文件中。
此外,计算器中的这些函数不会更改计算器状态,因此您可以让 Copilot Chat 通过将静态修饰符附加到不更改计算器状态的成员函数来彻底解决此问题。Copilot Chat 甚至可以提供有关静态功能的有用评论。
Copilot Chat 还可以帮助您生成新代码。
您可以通过使用/generate命令在聊天窗口中询问 Copilot Chat并指定要为其生成代码的特定文件来生成代码。在这种情况下,您可以要求它创建一个新函数来计算两个数字是否相等,它甚至会使用您现有的编码约定在您的类中生成一个新函数。
现在已经为计算器编写了一些函数,您可以要求 Copilot Chat 为此创建测试。具体来说,您可以通过在 Copilot 聊天窗口中使用/tests命令来请求为我的代码编写测试。在本例中,输出是遵循预期数学约定并包含适当标头函数的 GTest。
为 Copilot Chat 提供有关您所需需求的更多背景信息可以为您带来更好的响应。例如,如果您不希望它使用 GTest 框架生成测试,而是想使用 Catch2,则应该在提示中解释这一点。您始终可以根据所需的结果将其他相关的附加项目上下文添加到 Copilot Chat,例如所需的包管理器、语言标准和测试框架。
Copilot Chat 还可以帮助以纯文本方式解释 C++ 代码,同时引用适用的符号。例如,您可以询问 Copilot 新测试代码中突出显示的部分是做什么的,它会用通俗易懂的语言向您解释所有内容,使您更容易理解。
Copilot Chat 甚至会通过简单、发人深省的访问,针对底部的代码片段提出后续问题。
Copilot Chat 可以帮助您在 C++ 工作流程中实现新的生产力水平。我们正在努力将其与 Visual Studio 进一步集成,因此请告诉我们您希望看到的任何改进工作流程的建议。此外,请告诉我们您希望看到有关使用案例的其他类型的内容或有关 Copilot Chat 的其他信息。我们欢迎有关您的产品体验的所有类型的反馈。下面的评论是开放的,或者您也可以通过电子邮件(VisualCpp@microsoft.com)或通过 Twitter(@VisualC)找到我们。要打开错误,请参阅Visual Studio 反馈。您还可以随时对 Copilot Chat 中提供的建议投赞成票或反对票,以向模型本身提供反馈。
作者 | Sinem Akinci
翻译 | RuiWang
出处 | 原文链接