Maguyva 的 C++ 支持:面向大型代码库的类与调用图
C++ 把真正的调用目标藏在命名空间、重载和虚派发背后。图谱帮助智能体把它找出来。
扩展名
.c, .c++, .cc, .cpp, 还有 6 个
C 没有用来组织代码的类或模块。结构存在于函数调用、头文件和结构体之中,同一个名字还可能出现在注释、宏和字符串字面量里。导出宏和注解宏会包裹声明,这会让只能解析纯 C 的工具出错。对智能体来说,稳妥的第一步就是调用图。
Maguyva 会构建这张图,让智能体在提出修改之前,就能看清一个函数会调用到什么、又被什么调用。
Maguyva 覆盖 .c 和 .h。函数定义会被提取为符号,结构体和联合体可以在结构搜索中作为类型定义选取。#include 指令会成为导入关系。
导出和可见性宏(如 FOO_API、DLLEXPORT 或 LIBEXPORT 这类模式)以及线程安全注解宏(如 GUARDED_BY 和 REQUIRES)会在解析前被屏蔽,因此被它们包裹的声明仍然能作为声明解析。类函数宏的宏体会被解析;类对象宏的宏体则不会。
图谱记录调用、头文件包含、复合字面量实例化、类型引用、读写以及控制流。约 124 个标准 C 库调用(printf、malloc、free、memcpy、strlen 等)会从关系中过滤掉,让项目代码更加突出。
uart_write,无论是直接调用还是经由其他函数?”(dependency_search 的 incoming 方向)config.h,它们使用了其中哪些结构体?”(先用 dependency_search,再用 find_symbol)get_task_context).h 同时出现在 C、C++ 和 Objective-C 的扩展名列表中,因此混合语言的头文件由这些配置共享。malloc 或 memcpy 时,请使用 text_pattern_search。最适合场景
智能体工作流
引擎细节
常用 MCP 入口工具
需要定义和所有引用时,用函数名或结构体名来查找。
在修改共享函数的签名或错误处理之前,使用 incoming 遍历。
适用于“解释一个数据包如何从接收中断流转到协议解析器”这类提示词。
相关指南