C++ в Maguyva: графы классов и вызовов для больших кодовых баз
C++ прячет настоящую цель вызова за пространствами имён, перегрузками и виртуальной диспетчеризацией. Граф помогает агенту её найти.
Расширения
.c, .c++, .cc, .cpp, +ещё 6
Maguyva поддерживает C с AST, символами и графом, чтобы ИИ-агенты отслеживали функции, структуры, include и вызывающих в системном коде, прошивках и библиотеках.
В C нет классов и модулей, которые упорядочивали бы код. Структура живёт в вызовах функций, заголовках и структурах, а одно и то же имя может встречаться в комментариях, макросах и строковых литералах. Макросы экспорта и аннотаций оборачивают объявления, и инструменты, умеющие разбирать только чистый C, на них спотыкаются. Для агента безопасный первый шаг — граф вызовов.
Maguyva строит этот граф, чтобы агент видел, до чего доходит функция и что доходит до неё, прежде чем предложить изменение.
Maguyva охватывает .c и .h. Определения функций извлекаются как символы, а структуры и объединения можно выбрать как определения типов в структурном поиске. Директивы #include становятся связями импорта.
Макросы экспорта и видимости (шаблоны вроде FOO_API, DLLEXPORT или LIBEXPORT) и макросы аннотаций потокобезопасности (например, GUARDED_BY и REQUIRES) маскируются перед разбором, поэтому обёрнутые ими объявления по-прежнему распознаются как объявления. Тела функциональных макросов разбираются, тела объектных макросов — нет.
Граф фиксирует вызовы, include, создание экземпляров через составные литералы, ссылки на типы, чтения и записи, а также поток управления. Около 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.Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для кода на C++ в том же дереве прочитайте руководство по C++.
Лучше всего подходит
Сценарии работы агента
Детали движка
Полезные точки входа MCP
Используйте с именем функции или структуры, когда нужны определение и все ссылки.
Используйте обход incoming для общей функции перед изменением её сигнатуры или обработки ошибок.
Используйте для промптов вроде «объясни, как пакет проходит от прерывания приёма до парсера протокола».
Похожие гайды
C++ прячет настоящую цель вызова за пространствами имён, перегрузками и виртуальной диспетчеризацией. Граф помогает агенту её найти.
Расширения
.c, .c++, .cc, .cpp, +ещё 6
Актуально, когда вам нужна ИИ-помощь в Rust без потери структурных гарантий безопасности, ради которых Rust вообще стоит использовать.
Расширения
.rs