コードのリファクタリング、特にファイル間の「インクルード」のような関係を実行したいと思います。それらはかなりの数ありますが、最初に、リスト、図、さらには縦棒グラフを用意しておくと、どこから何が含まれているのかが一目でわかります。
(多くの場合、特定のファイルは他の複数のファイルに含まれているため、グラフはツリーではなくDAGになります。サイクルはありません。)
私はTeX(実際にはConTeXt)を使用していますが、この質問は#include
、Cのような機能を備えたすべてのプログラミング言語に当てはまるようです。
明白で簡単な答えは、関連するキーワード( 、、および定義した他のいくつかのマクロ)のgrep
すべての.texファイルに対してまたは「ファイル内検索」を実行することです。これは何もないよりはましですが、出力は長く、何を含むもののパターンを確認することは依然として困難です。たとえば、ファイルAは通常ファイルBの前に含まれていますか?ファイルCが同じファイルに複数回含まれていることはありますか?\usemodule
\input
それは追加の、しかしオプションの機能をもたらすと思います:そのようなツールは特定のファイルからのインクルードのシーケンスを表示することができるでしょう。したがって、その場合、DAGはマルチグラフである可能性があります。つまり、あるファイルから別のファイルに複数のアークが存在する可能性があります。
理想的には、各ファイルに注釈を付けて、その内容の非常に簡単な要約を提供できると便利です。これは、そのファイルのグラフノードのテキストの一部を形成します。
おそらく、この種のことは、graphvizドット言語を生成するスクリプトで実行できます。しかし、私は車輪の再発明ではなく、それがすでに行われたかどうかを知りたかったのです。