我正在尝试使用 graphviz 绘制 C 头文件之间的依赖关系图。
基本上,我所做的是记录所有出现的#include 和条件(我的意思是#if 条件)。如果一个文件包含另一个文件,则它成为图中的父亲,潜在条件是边标签。
我得到了一个相当大的图表。问题源于总是水平的边缘标签(你不能改变它)并且似乎总是左对齐(我试过 labeloc 和 labeljust 但它没有改变任何东西。“居中”的正确方法是什么一条边的标签。
为了避免这个问题,我尝试将条件呈现为节点。如果 A.h 在 ANSI 条件下包含 B.h,则存在从 A.h 到 ANSI,然后从 ANSI 到 B.h 的链接......看起来不错,但问题是如果 C.h 在相同条件下包含 D.h,我会看到从 A.h 到 ANSI 的链接, 一个从 C.h 到 ANSI;一个从 ANSI 到 B.h ,一个从 ANSI 到 D.h 。问题是我不知道包含 B.h 的是 A.h 还是 C.h。有没有一种方法可以指定诸如通过节点之类的东西(从 A.h 到 B.h 的链接在 ANSI 下可能利用透明度。)
最佳答案
labelloc 和 labeljust 对于边是没有意义的。参见 here ,它分别将“GC”表示为图形、集群或将“N”表示为节点。
但是,您可以考虑为每个条件 生成带有标签的唯一节点。然后会有多个节点具有不同的“点 ID”,但具有相同的标签(条件的文本),因此很明显是 A.h
还是 C.h
包含 B.h
。我想您会对结果感到满意,因为您已经说过它看起来不错。
祝你好运!
关于c - GraphViz 边缘标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830737/