我想对代码进行一些重构,尤其是文件之间的“包含”类关系。其中有很多,要开始使用,最好有一个列表、图表,甚至是柱状图,这样我就可以一眼看出从哪里包含了什么。
(在许多情况下,给定文件包含在多个其他文件中,因此该图将是 DAG,而不是树。没有循环。)
我正在使用 TeX(实际上是 ConTeXt),但这个问题似乎适用于任何具有类似#include
C功能的编程语言。
显而易见,简单的答案是在所有 .tex 文件中为相关关键字( ,和我们定义的其他几个宏)执行一个grep
或“在文件中查找” 。这总比没有好,但是输出很长,仍然很难看到包含什么的模式。例如,文件 A 通常包含在文件 B 之前吗?文件 C 是否曾多次包含在同一个文件中?\usemodule
\input
我想这会带来一个额外但可选的功能:这样的工具将能够显示来自特定文件的包含序列。所以在那种情况下,DAG 可能是一个多重图,即从一个文件到另一个文件可能有多个弧。
理想情况下,最好能够对每个文件进行注释,并对其中的内容进行非常简短的总结。这将构成该文件图形节点上文本的一部分。
可能这种事情可以通过生成graphviz dot语言的脚本来完成。但我想知道它是否已经完成,而不是重新发明轮子。