web-dev-qa-db-ja.com

C / C ++ #includeグラフを簡単に表示するにはどうすればよいですか?

特定のファイルに含まれるすべてのファイルを表示し、それらのファイルに含まれるすべてのファイルを表示するツール(できればVisual Studioプラグイン)を探しています。

42
CannibalSmith

DoxygenGraphviz の助けを借りて、それを行うことができます。最初に構成ファイルを編集する必要があります。これは初めて行うのは簡単ではありませんが、その後の編集はそれほど必要ありません。

12
kgiannakakis

まず、cinclude2dot.plは、C/C++コードを分析して#include依存関係グラフをgraphvizへの入力用のドットファイルとして生成するPerlスクリプトです。

http://www.flourish.org/cinclude2dot/

この種の手動ツールを使用したくない場合は、はるかに勝者が手にしたのは、「IncludeManager "ProFactorから。

http://www.profactor.co.uk/includemanager.php

無料トライアルがあり、それは素晴らしいです。これは完全に統合されたVisual Studioのプラグインなので、ここで何かをダブルクリックすると含まれている場所に移動しますあそこ

ツールチップのマウスオーバーにより、必要なすべての情報が得られます。ドリルダウン/アップ、不要なサブツリー全体の削除、グラフ以外の表現の表示、これに一致するもののリストの循環、それは素晴らしいことです。

迅速に対応できる場合は、試用期間が終了する前に、大規模プロジェクトの#include構造をリファクタリングできます。それでも、1ライセンスあたり約35ドルとそれほど高くはありません。

それが何をするかについては、それはほぼ完璧です。 #includeグラフだけでなく、共有ファイルのプロジェクト間の依存関係、ビルド時間への影響、グリッドの詳細なプロパティ、完璧。

17
Allbite

たいしたものではないかもしれませんが、Visual Studioコンパイラ(cl.exe)にはオプション/showIncludesこれは、ファイルをコンパイルするときにインクルードのツリーを表示します。

単一ファイルのこの情報が必要な場合は、ソリューションエクスプローラーでファイルを右クリックして、[プロパティ]を選択し、[コマンドライン]セクションで、/追加のオプションを[追加オプション]に追加します。 (私はVC++ 2005を使用しているため、新しいバージョンでは異なる場合があります)。

表示される出力は少し複雑ですが、何が含まれ、どのような順序で表示されるかがわかります。

ちなみに、GCCとIntel C++コンパイラ(少なくとも私のバージョン)の同じ機能は-H

10
icabod

あなたはこれによって提案された方法を試すことができます Stack Overflow answer

C/C++->高度なプロジェクト設定「show Includes」があります。ツリーが生成されます。コンパイラスイッチにマッピング / showIncludes

6
wip

Visual Studio 2010を使用している場合は、Microsoftの新しい Visualization and Modeling Feature Pack を使用できます。これには、インクルードグラフを生成する機能があります。ただし、これは、MSDN添え字を介してのみ使用できます。

4
Phil Devaney

あなたの好みではありませんが、doxygenはそれをうまく行います。

2
Jens Gustedt

http://www.codeproject.com/KB/applications/includefinder.aspx

これはVSプラグインではありませんが、独自のツールのスターターになります。私が見る限り、VC6プロジェクトのみを読み取るため、新しいVSは解析しやすいXML形式を持っています。それから必要なのは、ツールがインクルードされたファイルを見つけることができるように、デフォルトのインクルードパスです。または、GUIでユーザー入力として設定ボックスを提供することもできます。

0
jdehaan