2012-02-24 40 views
0

我正在嘗試爲我正在處理的代碼(我沒有寫它)來生成一個調用樹來幫助我理解它。我希望能夠手動輸入每個函數及其調用的函數(如兒童),從而構建樹。但是我希望它自動地組織和定位圖表,以便在我每次添加內容時不必移動所有內容。例如,這裏的數據種類的結構我想提出,在蹩腳Lispesque格式:樹(作爲可視化工具)編輯軟件的建議?

(initAll //root node 
    (//root node's children - functions it calls 
    (initDisplay()) //this child is a leaf 
    (initControlBar 
     (//initControlBar's children - functions it calls 
     (addButtons()) 
     (setUpControlBarEvents()) 
     ) 
    ) 
    (alertUserSystemReady()) 
) 
) 

我想這可能是一個圖形工具(樹木是圖的一個子集,當然) ,但我不認爲圖形工具能夠自動將事物置於正確的級別。我喜歡將這些數據組織成一棵樹,因爲它有不同的級別,這可以幫助我可視化發生的事情。

我試過yEd和LucidChart,但都對我來說太手動。由於樹會變得很深,我需要一些可以自動重構樹數據的東西。我也嘗試過Graphviz,但無法正常工作(我在Windows上,不知道安裝後該做什麼)。

Google在樹編輯器方面沒有太多幫助 - 它給了我像http://bioinfo.unice.fr/biodiv/Tree_editors.html這樣的頁面,這些頁面只有太多選擇。在這種情況下,我認爲使用他人的經驗會更好,所以我來到了這裏。

那麼,有誰知道任何工具可以讓我更接近我的目標?謝謝!

回答

2

使用dot語言來表示文件中的圖形,然後使用graphviz來將其可視化。引擎(其中一個與graphviz提供的引擎)將繪製您描述的分層圖。下面是一個例子的圖表:

http://www.graphviz.org/Gallery/directed/unix.png

需要創建該文件的語法是這樣的(從用於上述圖中的文件中取出的):

digraph unix { 
    size="6,6"; 
    node [color=lightblue2, style=filled]; 
    "5th Edition" -> "6th Edition"; 
    "5th Edition" -> "PWB 1.0"; 
    "6th Edition" -> "LSX"; 
    "6th Edition" -> "1 BSD"; 
    "6th Edition" -> "Mini Unix"; 
    "6th Edition" -> "Wollongong"; 
    ... 
} 

相同的文件也被傳遞給不同類型的圖的不同引擎,但dot引擎是通常用於代碼結構和依賴關係的引擎。