2010-06-02 108 views
2

是否有任何解析C++源代碼的庫可以讓我們說,調用圖,類繼承樹,流控制,類成員列表或任何可以在代碼中使用的圖或結構(不在圖表中)。C++代碼解析器/處理器庫

,使其更清晰,假設生成調用圖圖像,會有一個過程是這樣的:

`

C++ source -> parser -> intermediate structure -> renderer -> call graph image 
            ^
            | 
           [i need this] 

`

回答

3

這取決於你想要解析的準確程度。如果你想要它是絕對準確的(即不應該錯過一個類,因爲它過於複雜的宏或模板元編程,它無法處理),那麼你需要一個適當的C++前端爲此,我不知道任何既自由又易於重用的。

如果你願意付出,那麼至少有兩個選項:

EDG是用來驅動智能感知在VC++ 2010,這是非常令人印象深刻的,並且看起來非常準確 - 根據我的經驗,它正確地處理了多態Boost.Lambda的完成(並不令人驚訝,因爲它也驅動EDG C++編譯器,顯然必須得到正確的輸入)。

我對Semantic Design前端或其用戶瞭解不多,但Ira Baxter來自StackOverflow,所以我會讓他提供有關其產品的更多信息。

如果你想自由但不完美,那麼也許GCC_XML已經足夠你。

+0

GCC_XML只提供聲明信息。它沒有提供關於代碼的信息,所以你不能用它來生成調用圖。 – 2010-06-03 10:43:06

+1

請參閱http://semanticdesigns.com/Products/DMS/FlowAnalysis.html,瞭解一般情況下DMS可用的流分析和調用圖信息。我們還沒有爲C++提供這些信息,儘管我們爲C做了所有這些。C++前端*解析,構建AST並構建完整的符號表。 – 2010-06-03 10:48:31

0
  1. 有GCC的內部。它有點像圖書館一樣。
  2. 有一些Eclipse CDE包可以很好地解析C++,這對於IDE來說可能還可能不夠好。
2

LLVM圖書館家族可能是您最好的選擇。儘管如此,最後我檢查了對C++的支持還沒有完成。