私はEbrowseのガイドを書いており、今週にリリースします。Ebrowseは、C ++ソースファイルを処理して、後でEmacsによって処理されてクラスツリー表現を生成するクラス階層を含むデータベースを生成するために使用される高速パーサーです。GNU Globalに似ていますが、Emacsに組み込まれており、クラスツリーを生成するため、大きなソースツリーでの処理には時間がかかります。
Ebrowseを使用するには:
find . -name '*.cpp' -or -name '*.h' | ebrowse
必要に応じて、さらに拡張子を追加します。プロジェクトに数百のファイルしかない場合、= Ebrowse =は非常にうまく機能します。コマンドを実行すると、という名前のファイルBROWSE
が生成されます。これは、クラス階層を含むデータベースです。このファイルを開くだけで、Emacsは自動的にファイルを認識して処理します。データベースの処理が完了すると、Emacsはデータベース内のすべてのクラスのインデックスをツリー形式で表示します。クラスがクラスから派生している場合、それは親クラス内にネストされています。このバッファはと呼ばれますTree buffer
。Emacsは以下と相互作用する3つの方法を提供しますEbrowse
:
Tree
buffer:ツリーを表示するバッファー。
Member
buffer:各クラスのメンバーを表示するバッファー。クラスの宣言と定義を切り替えて、対応するソースファイル内のそれぞれの場所にジャンプできます。
Source
buffer:コードバッファー。Ebrowse
読み取りと表示(読み取り専用で開く)の宣言と定義のようなデータベースを操作できます。タグを含むクラスの= Member =バッファをポイントで開きます...
大規模なプロジェクト(つまり、10000を超えるcppファイル)があるが、すべてのクラスが.h
ファイル内にある場合は、追加しないでください。追加しないと、ファイルの.cpp
生成に非常に時間がかかりBROWSE
ます。ただし、定義に切り替える機能は失われます。しかし、これはctags
またはを使用して行うことができますGNU Global
。最も重要なことは、クラス階層をで表示することですTree buffer
。これがEbrowseの利点です。
WIPガイドはこちらです。
更新:または、doxygenを使用してすべての種類のグラフ(呼び出し元/呼び出し先グラフ、依存関係グラフ、クラス階層グラフ...)を生成できますが、ipxeのような小さなソースツリーであっても、すべてを生成するには長い時間がかかります。これはdoxygen
遅くはありませんが、実際には非常に最適化されていますが、コードベース全体の依存関係を計算することは簡単な作業ではありません。
おまけ:Cで作業していて、コールグラフを見たい場合は、GNU Cflowを使用してください。私のReddit回答を参照してください。