结合 GitHub Copilot Chat 使用 C++ 开发工具
在 C++ 代码中进行重构和更新通常需要跟踪多个文件中的修改,并了解你的构建配置。
GitHub Copilot Chat 可以使用内置于 VS Code 中的 C++ 工具,为你的 C++ 项目提供具备上下文感知能力的辅助。通过使用代码理解和 CMake 工具,Copilot 可以理解你的代码库结构、依赖项和构建配置,从而为你提供更准确、更有帮助且更快速的响应。
本指南涵盖了可用的工具以及如何将它们与 AI 智能体结合使用来有效地完成以下任务,例如:
- 导航和理解复杂的 C++ 代码库
- 在完全感知上下文的情况下重构代码
- 高效配置和构建项目
前提条件
- C/C++ DevTools 扩展
- C/C++ 扩展
- CMake Tools 扩展
这些扩展作为 C/C++ Extension Pack 的一部分提供。
你可以随时在聊天中导航到 Tools(工具)选项并选择要启用/禁用的相应工具,从而启用或禁用这些工具中的任意一个。

仅启用与你的开发工作流相关的工具,以避免上下文膨胀。你可以通过相同的对话框禁用其他工具,例如通过 MCP 安装的工具。
C++ 代码理解工具
C++ 扩展提供的工具利用语言服务,使 Copilot Chat 能够深入理解你的代码结构、符号和关系。确保你已配置了 IntelliSense 以充分利用这些工具。
要启用这些工具,请在你的 VS Code 用户设置中勾选 Enable Cpp Code Editing Tools 设置。

获取符号信息 (GetSymbolInfo_CppTools)
作用:检索代码库中符号(函数、类、变量等)的详细信息,包括它们的定义、类型和文档。
示例用例:优化内存性能并确保不引入破坏性变更

获取符号引用 (GetSymbolReferences_CppTools)
作用:查找整个代码库中对特定符号的所有引用,展示函数、类或变量的使用位置。
示例用例:为现有函数添加额外功能

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

获取符号调用层级 (GetSymbolCallHierarchy_CppTools)
作用:显示函数的调用层级,揭示传入调用(谁调用了此函数)和传出调用(此函数调用了什么)。
示例用例:模块迁移的依赖分析

CMake 工具集成
CMake 工具允许 Copilot Chat 理解你的构建配置、目标和依赖项,从而提供具备构建感知能力的辅助。
CMake 构建 (Build_CMakeTools)
作用:使用当前配置和所选目标构建你的 CMake 项目。
示例用例:解决构建错误

运行 CTest (RunCTest_CMakeTools)
作用:运行项目中由 CTest 定义的测试套件
示例用例:根据单元测试修复代码

高效提示词技巧
- 具体明确:指出你正在询问的具体符号、文件或组件(例如,使用“重构
getConfig()函数”而不是“让这个更快”) - 引用上下文:让 Copilot Chat 在分析更改时考虑特定的文件、函数或模块
- 直接引用工具:在聊天中使用 # 直接引用相关工具以确保其被调用。
- 使用自定义指令:设置自定义指令来引导 Copilot Chat。请参阅用于提高 C++ 工具调用率的示例自定义指令,文档详见 awesome-copilot 仓库。
- 利用最新模型:使用支持工具调用的最新 AI 模型,以获得最准确的代码理解和工具使用体验
- 优化工具性能:仅启用与你的开发工作流相关的工具,以避免上下文膨胀
何时使用各个工具
符号信息:当你需要理解现有代码的结构或在进行更改前验证属性时使用。
符号引用:在重构时使用,以识别所有用法并确保更改不会破坏现有代码。
调用层级:在分析依赖项、理解调用链或规划模块迁移时使用。
CMake 构建:在排查构建问题或验证更改是否成功编译时使用。
CTest:在使用测试套件验证更改或调试测试失败时使用。