2009-08-13 139 views
9

A排序跟進/相關的問題,以this的。C++代碼可視化

我試圖讓有成百上千的類和大型的繼承層次的大型代碼庫的抓地力。我希望能夠一目瞭然地看到繼承層次的「主要脈絡」 - 而不是所有隻能做一些非常特殊/專門的事情的「外圍」類。 Visual Studio的「查看類圖」使得東西看起來像一列火車,並且它在屏幕上水平地延伸並且不是很有組織。你無法輕鬆地練習它。

我剛試過的doxygen和graphviz的,但結果是..有點類似Visual Studio中。我越來越甜看電話圖表,但再次太多細節我想要得到什麼。

我需要一種快速的方法來生成繼承層次結構,在某種可摺疊的視圖中。

回答

6

爲什麼不只是做手工,這是開始一個大的代碼基礎工作的時候一個很好的學習經驗。我通常只是看什麼類從什麼繼承而來,哪些類包含哪些實例,引用或指向其他類的指針。在你身邊放一張紙並得到繪圖...

+1

我真的結束了火車圖並檢查它。然後我畫了一張新圖。一個有益的經驗! – bobobobo 2009-09-02 05:04:49

5

一個好的UML工具應該做的伎倆。

這裏是通用的UML工具列表:http://en.wikipedia.org/wiki/List_of_UML_tools

有很多在那裏,都具有不同的功能集。嘗試玩幾個,看看你是否得到你想要的輸出。如果他們免費的失敗,你可能不得不掏出一個良好的商業級的UML工具

4

你可以嘗試CppDepend,它不會像Doxygen那樣創建類層次結構,但它可以顯示你的項目的'全貌',它也顯示一些代碼度量。

4

而不是去到滿級的設計工具,只需使用「類視圖」,或在Visual Studio中的「對象瀏覽器」 - 他們目前完全摺疊類heirarchies。

0

你對'主脈'的定義是什麼?你可能需要一個圖形縮減器或者skeletizer(你可以找到或者寫出一個並將它應用於Doxygen和其他產生的東西),或者'主要脈'與代碼的功能有關,並且我不認爲自動化工具可以幫助你。除非你能指出它'這些是做輸入和輸出的重要位,只給我看看距離它們之間的路徑一步或兩步的元素。哼,聽起來像是一個很酷的工具:)

...繼承層次結構,在某種可摺疊的視圖。

再次,一個甜美的想法的工具!

2

檢查出SourceNavigator,它是開源的,可以在一堆平臺上運行,並且具有層次瀏覽器,類瀏覽器,交叉引用瀏覽器等,可以讓您瀏覽和理解代碼。

我現在使用它一段時間,特別是當我有新的代碼去了解和理解。

3

我已經與valgrind和kcachegrind做到了最成功。您對您的調試二進制文件運行valgrind,執行您感興趣的任何操作,然後將輸出導入到kcachegrind中,以查看關於誰調用什麼,什麼時候以及何時調用哪些內容。另外,因爲你動態地做它,它捕捉了靜態分析可能不會發生的情況。我使用Enterprise Architect的逆向工程特性也取得了一些成功,儘管這不會很好(但你得到了一個可行的UML模型,這很好!)。

最後,一個名爲「理解」的工具。這在靜態的面向對象分析方面非常出色,但是我覺得它非常昂貴,並沒有被廣泛使用。

2

對於價格合理的商業產品,您可能想要查看Vizlogix(www.vizlogix.com)中的SolidSX。 (如果您不在北美洲,請轉至SolidSource - www.solidsourceit.com。)

它生成可摺疊和展開的徑向圖。它還與Visual Studio(BSC和.NET)集成。

+0

奇怪和怪誕的:) – bobobobo 2010-04-04 00:45:45