使用 C++ 开发工具配合 GitHub Copilot 聊天

用C++代码重构和更新通常需要追踪多个文件的编辑内容,并且了解你的构建配置。

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

本指南介绍了可用的工具以及如何有效利用AI代理完成以下任务:

  • 导航并理解复杂的C++代码库
  • 具备完整上下文感知的重构代码
  • 高效配置和构建项目

前提条件

这些扩展作为 C/C++ 扩展包的一部分提供。

你可以通过导航到以下作,在任何时候启用或禁用这些工具工具在聊天中选择你想启用或禁用的相应工具。

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

注释

只启用与开发流程相关的工具,以避免上下文臃肿。你可以通过同一对话框禁用其他工具,比如通过MCP安装的工具。

C++ 代码理解工具

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

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

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

获取符号信息(GetSymbolInfo_CppTools)

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

示例用例:优化内存性能并确保不破坏变更

聊天界面的截图,显示了一个提示,要求重构符号以实现内存安全,这触发了获取符号信息工具。


获取符号引用(GetSymbolReferences_CppTools)

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

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

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

注释

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

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


获取符号调用层级(GetSymbolCallHierarchy_CppTools)

它的作用:显示函数的调用层级,揭示了来电(谁调用该函数)和去电调用(该函数调用什么)。

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

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


CMake 工具集成

CMake 工具允许 Copilot Chat 了解你的构建配置、目标和依赖,从而实现构建感知辅助。

Create构建(Build_CMakeTools)

它的作用:用当前配置和选定目标构建你的CMake项目。

示例用例:解决构建错误

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


运行CTest(RunCTest_CMakeTools)

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

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

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


有效提示的技巧

  • 具体说明:请明确你问的具体符号、文件或组件(例如,“重构getConfig()“功能”而不是“让这个更快”)
  • 参考背景:请让Copilot Chat在分析变更时考虑具体的文件、功能或模块
  • 直接引用工具:在聊天中使用#直接引用相关工具以确保调用。
  • 使用自定义说明:设置自定义指令来引导Copilot聊天。类型/init为你的项目生成指令。
  • 利用最新车型:使用支持工具调用的最新AI模型,以获得最准确的代码理解和工具使用
  • 优化工具性能:只启用与开发工作流程相关的工具,以避免上下文臃肿

何时使用各工具

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

符号参考:重构时用来识别所有使用情况,确保更改不会破坏现有代码。

呼叫层级:用于分析依赖、理解调用链或规划模块迁移。

Cmake构建:用于排查构建问题或验证更改是否成功编译。

CTest:用于验证更改与测试套件的对照或调试测试失败时。