将 C++ 开发工具与 GitHub Copilot Chat 结合使用
重构和更新 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(启用 Cpp 代码编辑工具)设置。

获取符号信息 (GetSymbolInfo_CppTools)
功能:检索有关代码库中符号(函数、类、变量等)的详细信息,包括其定义、类型和文档。
使用案例示例:优化内存性能并确保非破坏性变更

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

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

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

CMake Tools 集成
CMake 工具允许 Copilot Chat 理解您的构建配置、目标和依赖关系,从而实现具备构建感知能力的辅助。
CMake 构建 (Build_CMakeTools)
功能:使用当前配置和选定目标构建您的 CMake 项目。
使用案例示例:解决构建错误

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

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