Lumaktaw papunta sa content
cd /languages
  • Native code sa malakihang scale
  • Programming
  • Support para sa AST at mga simbolo

C++ sa Maguyva: mga class at call graph para sa malalaking codebase

Sinusuportahan ng Maguyva ang C++ gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga class, namespace, virtual override at tumatawag sa malalaking C++ codebase.

Sa C++, hindi natatangi ang mga pangalan. Puwedeng free function ang send, member ng tatlong class at override sa ikaapat. Hinahati ng mga namespace, template at out-of-class definition, tulad ng Socket::send sa isang .cpp file, ang isang type sa maraming file. Ibinabalik ng text search ang bawat match, pero hindi nito sinasabi sa agent kung alin ang naaabot ng isang call.

Ini-index ng Maguyva ang mga class, member at call kasama ang mga may-ari nila, para sundan ng agent ang totoong structure bago mag-edit.

Ano ang kinukuha ng Maguyva mula sa C++

Sakop ng Maguyva ang mga karaniwang C++ source at header extension, kasama ang .cpp, .cc, .cxx, .hpp, .hh at .hxx. Kinukuha ang mga class, struct at function, at ina-attribute sa owning class at namespace nito ang isang out-of-class definition tulad ng void Socket::send(). Itinatala ang mga virtual member, at bahagi ng mga signature ang mga template parameter.

Sinusundan ng receiver typing ang mga parameter, local declaration, field, range-based for loop at auto, at sumisilip ito sa loob ng unique_ptr, shared_ptr at optional, kaya nare-resolve sa tamang class ang call tulad ng conn->send(). Pinapakain ng mga base-class clause ang inheritance, at itinuturing na instantiation ang mga new expression.

Ganoon din ang export at annotation macro masking na gaya ng sa C. Mga 273 standard-library name (std::cout, std::endl, printf at mga katulad nito) ang nifi-filter mula sa mga relationship. Itinatala ng graph ang mga call, include, inheritance, override, instantiation, type reference, read at write, at mga throw edge.

Mga halimbawang agent prompt

  • “Aling mga class ang nag-o-override ng Renderer::draw, at sino ang tumatawag dito?” (dependency_search)
  • “Ipakita sa akin ang OrderBook::match at ang bawat tumatawag dito.” (find_symbol)
  • “Ipaliwanag kung paano umaabot ang isang market-data message sa strategy engine.” (get_task_context)

Mga kilalang limitasyon

  • Lumalabas ang .h sa mga extension list ng C, C++ at Objective-C, kaya sa mga tree na pinaghalong C at C++, hinahati sa mga profile na ito ang mga header.
  • Hindi pina-parse ang body ng mga object-like macro, at hindi graph edge ang mga call sa mga na-filter na standard-library name. Gamitin ang text_pattern_search para sa mga macro at paggamit ng std::.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Kung purong C ang bahagi ng tree, basahin din ang gabay sa C.

Pinakabagay

  • > Mga game engine, trading system, browser at iba pang malalaking C++ codebase, kung saan ang pagbabago sa isang header ay nagre-rebuild ng kalahati ng tree.
  • > Mga class hierarchy na may virtual method, kung saan ang method na tumatakbo ay naka-define sa ibang lugar kaysa kung saan ito tinatawag.
  • > Agent-assisted na refactoring na kailangang malaman ang mga tumatawag at override bago magbago ang signature.

Mga workflow ng agent

  • > Hanapin ang bawat override ng isang virtual method bago magbago ang base class.
  • > Ilista ang mga tumatawag sa isang namespaced na function o class method, tulad ng `net::Socket::send`, sa buong codebase.
  • > I-trace kung saan ginagawa ang isang class gamit ang `new` at kung aling mga member ang hinahawakan nito pagkatapos.

Mga detalye ng engine

  • > Ina-attribute sa owning class at namespace ang mga out-of-class definition tulad ng `void Socket::send()`, at itinatala ang mga virtual member.
  • > Sinusundan ng receiver typing ang mga parameter, local, field, range-based `for` at `auto`, at sumisilip ito sa loob ng `unique_ptr`, `shared_ptr` at `optional`.
  • > Pinapakain ng mga base-class clause ang inheritance, itinuturing na instantiation ang mga `new` expression, at mga 273 standard-library name ang nifi-filter mula sa mga relationship.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin kasama ang fully qualified na pangalan tulad ng `OrderBook::match` kapag kailangan mo ang definition at mga tumatawag.

  • dependency_search

    Bago magbago ang signature, gamitin sa isang base class o virtual method para mahanap ang mga override at tumatawag.

  • get_task_context

    Gamitin para sa mga prompt tulad ng “ipaliwanag kung paano umaabot ang isang market-data message sa strategy engine”.