doxygenを使用して簡単なクラス図を生成する方法を説明した資料を探していましたが、見つかりませんでした。誰か助けてもらえますか?
C ++ファイルのセットから、以下に示すような図を作成する必要があります。
これを簡単に実現するためのより良いツールがある場合は、お知らせください。
回答:
Doxygenは継承図を作成しますが、クラス全体の階層を作成するとは思いません。GraphVizツールを使用できます。Doxygen GUIフロントエンドツールを使用する場合、関連するオプションがにありStep2: -> Wizard tab -> Diagrams
ます。DOT関係オプションは[エキスパート]タブにあります。
この投稿からの引用(それはdoxygenの作者自身によって書かれました):
run doxygen -g and change the following options of the generated Doxyfile:
EXTRACT_ALL = YES
HAVE_DOT = YES
UML_LOOK = YES
run doxygen again
うーん、これは少し古い質問のようですが、ここ数日、Doxygenの設定をいじっていたので、頭がまだ最新の情報でいっぱいになっているので、試してみましょう-
私は以前の答えにはほとんどそれがあると思います:
不足しているオプションはCOLLABORATION_GRAPH = YES
、Doxyfile に追加することです。私は、doxywizard GUIのどこかで同等のことができると思います(私はdoxywizardを使用していません)。
したがって、より完全な例として、私が使用する傾向があるUML出力に関連する一般的な「Doxyfile」オプションは次のとおりです。
EXTRACT_ALL = YES
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS = YES
DOT_GRAPH_MAX_NODES = 100
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
これらの設定により、「継承」(CLASS_GRAPH=YES
)と「コラボレーション」(COLLABORATION_GRAPH=YES
)の両方の図が生成されます。
doxygen出力の「デプロイメント」のターゲットによっては、設定DOT_IMAGE_FORMAT = svg
も役立つ場合があります。svg出力では、図は.pngなどのビットマップ形式の固定解像度ではなく「スケーラブル」です。どうやら、IE以外のブラウザーで出力を表示する場合INTERACTIVE_SVG = YES
、生成されたsvg図の「インタラクティブなズームとパン」を可能にするものもあります。私はこれを少し前に試しましたが、svgの出力は視覚的に非常に魅力的でしたが、当時のsvgに対するブラウザーのサポートにはまだ一貫性がなかったため、状況が最近改善された可能性があります。
他のコメントで述べたように、これらの設定の一部(DOT_GRAPH_MAX_NODES
特に)はパフォーマンスに影響を与える可能性があるため、YMMVです。
私は「RTFM」スタイルの回答を嫌う傾向があるので、この文章については謝罪しますが、この場合、Doxygenのドキュメントは本当にあなたの友達です。ですから、上記の設定に関するDoxygenのドキュメントをチェックしてください。http://www.doxygen.nl/manual/config.html。
RECURSIVE
提出をYES に変更する必要がある場合もあります
doxysファイルを編集し、GENERATE_UML(そのようなもの)をtrueに設定する必要があると思います。そして、あなたはdot / graphvizをインストールする必要があります。
賛成票の上位2つが正解です。今日の時点で(デフォルト設定から)変更する必要があるのは、組み込みジェネレーターの代わりにドットを使用して生成できるようにすることだけでした。
重要な注意事項:
html/inherits.html
クラス内または(Webサイトのナビゲーションから)クラス=>クラス階層=>「テキストのクラス階層に移動」で見つけることができます。T
。
foo
継承しT
、T
テンプレートタイプパラメータにデフォルトがある場合、そのデフォルトが想定されます。デフォルトとは異なる場所bar
から継承するタイプがある場合は、親を持ちます。そして、共通の親を持ちません。foo<U>
U
bar
foo<U>
foo<>
bar<U>
variant
インスタンス化は継承に表示されますvariant<Ts...>
。<...>
デフォルトを持たないタイプおよび非タイプのパラメーターを表す名前の文字列が含まれます。