我正在尝试为我正在处理的代码生成一个调用树(我没有写它)来帮助我理解它。我希望能够手动输入每个函数及其调用的函数(作为子元素),从而构建树。但是我希望它能够自动组织和定位图表,这样就不会有任何重叠而不必每次添加内容时都要移动所有东西。例如,这是我想要用蹩脚的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上并且在安装后不知道该怎么做)。
谷歌在树编辑器端没有太多帮助 - 它给了我http://bioinfo.unice.fr/biodiv/Tree_editors.html之类的页面,这些页面有太多可供选择。在这种情况下,我认为使用他人的经验会更好,所以我来到这里。
那么,是否有人知道任何可以让我更接近目标的工具?谢谢!
答案 0 :(得分:2)
使用dot
语言在文件中表示图形,然后使用graphviz将其可视化。 dot
引擎(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
引擎是代码结构和依赖项常用的引擎。