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

在 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 设置。

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 工具集成

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:在使用测试套件验证更改或调试测试失败时使用。

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.