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

重构和更新 C++ 代码通常需要跟踪多个文件中的编辑内容,并掌握构建配置的相关知识。

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

本指南介绍了可用的工具,以及如何将它们与 AI 代理有效结合,以完成以下任务:

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

先决条件

这些扩展包含在 C/C++ Extension Pack 中。

您可以随时通过导航至聊天窗口中的 Tools(工具)选项,并选择您想要启用/禁用的相应工具,来启用或禁用这些工具。

Screenshot showing the list of cpp tools in the chat tools Quick Pick.

注意

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

C++ 代码理解工具

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

要启用这些工具,请在 VS Code 用户设置中勾选 Enable Cpp Code Editing Tools(启用 Cpp 代码编辑工具)设置。

Screenshot of the Settings editor, showing the Enable Cpp Code Editing Tools setting.

获取符号信息 (GetSymbolInfo_CppTools)

功能:检索有关代码库中符号(函数、类、变量等)的详细信息,包括其定义、类型和文档。

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

Screenshot of the Chat view, showing a prompt to refactor a symbol to be memory-safe, which invokes the get symbol info tool.


获取符号引用 (GetSymbolReferences_CppTools)

功能:在整个代码库中查找特定符号的所有引用,显示函数、类或变量的使用位置。

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

Screenshot of the Chat view, showing a prompt to update an existing function and add a parameter for logging, which invokes the get symbol references tool.

注意

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

Screenshot of the Settings editor, showing the symbol references limit setting.


获取符号调用层级 (GetSymbolCallHierarchy_CppTools)

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

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

Screenshot of the Chat view, showing a prompt to migrate a module into a separate library and thus requesting a dependency analysis, which invokes the get symbol call hierarchy tool.


CMake Tools 集成

CMake 工具允许 Copilot Chat 理解您的构建配置、目标和依赖关系,从而实现具备构建感知能力的辅助。

CMake 构建 (Build_CMakeTools)

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

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

Screenshot of the Chat view, showing a prompt to resolve build errors, which invokes the CMake build tool.


运行 CTest (RunCTest_CMakeTools)

功能:运行项目中由 CTest 定义的测试套件。

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

Screenshot of the Chat view, showing a prompt to fix failing unit tests, which invokes run ctest.


有效提示词建议

  • 具体明确:指出您正在询问的确切符号、文件或组件(例如,“重构 getConfig() 函数”而不是“让这段代码更快”)
  • 参考上下文:要求 Copilot Chat 在分析变更时考虑特定的文件、函数或模块
  • 直接引用工具:在聊天中使用 # 直接引用相关工具,以确保触发调用。
  • 使用自定义指令:设置自定义指令来引导 Copilot Chat。请参阅文档中关于提高 C++ 工具调用率的示例自定义指令:awesome-copilot 仓库
  • 利用最新模型:使用支持工具调用的最新 AI 模型,以获得最准确的代码理解和工具使用效果
  • 优化工具性能:仅启用与您的开发工作流相关的工具,以避免上下文膨胀

何时使用各类工具

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

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

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

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

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

© . This site is unofficial and not affiliated with Microsoft.