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 走訪。
適合用於「說明一個封包如何從接收中斷流向協定剖析器」這類提示。
相關指南