2012-06-25 58 views
1

對於給定的方法(例如Settings.cpp getSettingByName()),我想構建一個靜態調用圖。有沒有一種開源工具可以爲java和C++做到這一點?單一方法調用圖(C++和java)

例如,如果我給它「Settings.cpp getMethodByName」它會返回:

Settings.cpp getSettingByName(); 
    SettingsWrapper.cpp getMaximumSpeed(); 
     ECU.cpp monitorSpeed(); 
      Operate.cpp runECU(); 
       Main.cpp run(); 
     CruiseControl.cpp accelerate(); 
      Operate.cpp runCruiseControl(); 
       Main.cpp run(); 
     Radio.cpp playApplauseThroughSpeakers(); 
      Operate.cpp runStereo(); 
       Main.cpp run(); 

不要驚慌關於代碼,這只是一個例子。

非常感謝, 菲德爾

+0

還沒有使用這個特定的功能,但Doxygen? http://www.stack.nl/~dimitri/doxygen/config.html#cfg_call_graph – BoBTFish

回答

1

Doxygen是一個很好的工具,可以爲Java和C++做到這一點。它甚至可以生成圖形和可點擊的調用圖。

+0

我不認爲Doxygen可以正確解析具有多重繼承的類的重載符號或方法;它有一個「hueristic」解析器作爲前端,而不是一個真正的C++前端。對於小程序,也許Doxygen給出了正確的結果。你是否有特定的經驗或理解,它會爲複雜的應用程序提供正確的結果,在這個複雜的應用程序中存在真正複雜的C++? –

+0

@IraBaxter是的,我已經嘗試了超過100K LOC的相當大的應用程序。我的同事們已經在C++,C++/CLI,C#應用程序上嘗試過了,它具有5M以上的LOC,並且沒有聽到任何抱怨 – GETah

+0

你能解釋它是如何得到正確答案的嗎? –