本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

使用 C++ 开发工具与 GitHub Copilot Chat

对C++代码进行重构和更新通常需要在多个文件中查找编辑内容,并且需要了解你的构建配置。

GitHub Copilot Chat 可以使用 VS Code 内置的 C++ 工具为您的 C++ 项目提供上下文相关的帮助。通过使用代码理解和 CMake 工具,Copilot 可以理解您的代码库结构、依赖关系和构建配置,从而为您提供更准确、更有帮助和更快速的响应。

本指南涵盖了可用的工具以及如何与AI代理有效结合以完成诸如:

  • 导航和理解复杂的 C++ 代码库
  • 使用全面的上下文意识重构代码
  • 高效配置和构建项目

先决条件

这些扩展是 C/C++ 扩展包的一部分。

您可以随时通过导航到 来启用/禁用这些工具。工具在聊天中选择相应的选项并启用/禁用所需的工具。

截图显示聊天工具快速选择中的cpp工具列表。

注意

仅启用与您的开发工作流程相关的工具,以避免上下文膨胀。您可以通过相同的对话框禁用其他工具,例如通过MCP安装的工具。

C++ 代码理解工具

C++ 扩展提供了使用语言服务的工具,使 Copilot Chat 能够深入理解您的代码结构、符号和关系。确保您已配置了 IntelliSense以利用这些工具。

要启用这些工具,请在 VS Code 用户设置中选择 启用 Cpp 代码编辑工具 设置。

设置编辑器的截图,显示了启用 C++ 代码编辑工具的设置。

获取符号信息 (获取符号信息_Cpp工具)

它的功能:获取代码库中符号(函数、类、变量等)的详细信息,包括它们的定义、类型和文档。

示例使用案例: 优化内存性能并确保无破坏性更改

聊天视图的截图,显示了一个提示,将符号改写为内存安全,这会调用获取符号信息工具。


获取符号引用 (获取符号引用_CppTools)

它的作用: 在你的代码库中找到所有特定符号的引用,显示函数、类或变量的使用位置。

示例用例: 为现有函数添加额外功能

聊天视图的截图,显示了一个更新现有函数并添加日志记录参数的提示,该提示调用了获取符号引用工具。

注意

您可以通过在 VS Code 中调整符号引用限制设置来控制工具返回的最大符号引用数量。

设置编辑器的截图,显示符号引用限制设置。


获取符号调用层次结构获取符号调用层次结构_CppTools)

功能: 显示函数的调用层次结构,揭示入站调用(谁调用此函数)和出站调用(此函数调用了什么)。

示例使用案例: 模块迁移的依赖性分析

聊天视图的截图,显示了一个提示,将模块迁移到单独的库中,从而请求依赖分析,这会调用获取符号调用层次结构工具。


CMake 工具集成

CMake 工具使 Copilot Chat 能够理解你的构建配置、目标和依赖项,从而实现构建感知辅助。

CMake 构建 (构建_CMake工具)

功能: 使用当前配置和选定的目标构建你的 CMake 项目。

示例使用案例: 解决构建错误

聊天视图的截图,显示了一个解决构建错误的提示,调用了CMake构建工具。


运行CTest (运行测试_CMake工具)

它的作用: 运行在你的项目中定义的CTest测试套件

示例使用案例: 根据单元测试修复代码

聊天视图的截图,显示了一个修复失败的单元测试的提示,调用了run ctest。


有效提示的技巧

  • 具体说明: 明确指出您所询问的符号、文件或组件(例如,“重构 getConfig()函数” 一个好的方法是 “使它更快”
  • 参考上下文: 请 Copilot Chat 在分析更改时考虑特定文件、函数或模块
  • 直接引用工具:在聊天中使用#直接引用相关工具,以确保调用。
  • 使用自定义指令: 设置 自定义指令 来指导 Copilot Chat。输入 /初始化生成项目说明。
  • 利用最新模型: 使用最新的AI模型,支持工具调用,以实现最准确的代码理解和工具使用
  • 优化工具性能: 仅启用与您的开发工作流程相关的工具,以避免上下文膨胀

何时使用每种工具

符号信息: 当你需要理解现有代码的结构或在进行更改之前验证属性时使用。

符号引用: 在重构时使用,以识别所有引用并确保更改不会破坏现有代码。

调用层次: 在分析依赖关系、理解调用链或规划模块迁移时使用。

CMake 构建:在排除构建问题或验证更改是否能成功编译时使用。

CTest: 在验证测试套件中的更改或调试测试失败时使用。