2012-02-24 37 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引擎是通常用于代码结构和依赖关系的引擎。