Doxygen

Doxygen
開発者ディミトリ・ファン・ヒーシュ
初回リリース1997年10月26日; 28年前[1] (1997年10月26日
安定版リリース
1.15.0 [2]  / 2025年10月22日; 31日前 (2025年10月22日
リポジトリ
  • github.com/doxygen/doxygen
言語C++
オペレーティングシステムクロスプラットフォーム
タイプドキュメントジェネレーター
ライセンスGPLv2
ウェブサイトdoxygen.nl

Doxygen/ ˈdɒksidʒən / DOK - see - jən[3]多くのプログラミング言語で動作するドキュメントジェネレーター[4] [5] [6] [7]です。特別な形式のソースコードコメントから情報を抽出し、サポートされている様々な形式のいずれかで情報を保存します

Doxygenはコードベース静的解析をサポートします。コードベースから解析された解析ツリーを用いて、コード構造の図やチャートを生成します。また、生成されたドキュメントからソースコードを参照するための相互参照機能も提供します。

Doxygenは様々なプログラミングコンテキストで使用できます。C [8] C++C#DFortranIDLJavaObjective-C[9] Perl[10] PHP[11] Python[12] [13] VHDL [11]など、多くの言語をサポートしています。UnixmacOSWindowsシステムなど、多くのコンピュータで実行できます。GNU General Public License version 2 (GPLv2)の条件に基づいてリリースされたフリーソフトウェアです 

歴史

Doxygenの最初のバージョンは、ベルリン・ツーゼ研究所のRoland WunderlingとMalte Zöcklerによって開発されたDOC++の初期バージョンのコードを借用していました。その後、DoxygenのコードはDimitri van Heeschによって書き直されました。

開発

DoxygenのソースコードはGitHubでホストされており、主要開発者であるDimitri van Heesch氏が「doxygen」という名前で貢献しています。[14] DoxygenはC++で書かれており、約30万行のソースコードで構成されています。字句解析には、約35,000行のlexスクリプトを介してLex(または代替のFlex)が実行されます。構文解析ツールのYacc(または代替のBison)も使用されますが、これは軽微なタスクにのみ使用されます。構文解析の大部分はネイティブC++コードを介して行われます。ビルドシステムにはCMakePythonスクリプトが含まれています

設計

Javadocなどの他のドキュメント生成ツールと同様に、Doxygenはコメントとシンボリックコード(コメント以外のコード)の両方から情報を抽出します。コメントは、コード内でプログラミングシンボルの直前に置くことで、そのシンボルに関連付けられます。コメント内のマークアップにより、生成されるドキュメントの挿入とフォーマットを制御できます

Doxygen は、 HTMLCHMRTFPDFLaTeXPostScriptman ページなど、さまざまな形式での出力をサポートしています

DoxygenはC++クラスの継承図を生成できます。より高度な図やグラフを作成するには、 Graphvizの「dot」ツールを使用します[15]

すべての例は、C言語のようなコメントを持つ言語で示されています。複数行コメントは で始まり/*、1行コメントは で始まります//

Doxygenは、特別なマークがない限りコメントを無視します。複数行コメントの場合、コメントは/**またはで始まる必要があります/*!。マークアップタグは、バックスラッシュ\)またはアットマーク(@)で始まります。[16]以下は、太字でマークアップされた比較的単純な関数コメントブロックです。

/* * *関数の説明 * @param  p1 パラメータの説明 * @param  p2 パラメータの説明 * @return 戻り値の説明 */void foo(int p1, int p2) {}

ブロックは様々な方法でフォーマットできます。一般的な方法は、各行のアスタリスクを左揃えにすることですが、Doxygenはこれを出力に含めません。例:

/* * *関数の説明 * @param  p1 パラメータの説明 * @param  p2 パラメータの説明 * @return 戻り値の説明 */void foo(int p1, int p2) {}

ブロックは、1行のコメントを連続して記述することもできます。Doxygenは、スラッシュ(/)または感嘆符(!)を追加したコメントも受け付けます。[17]

// / 関数の説明// /  @param  p1 パラメータの説明// /  @param  p2 パラメータの説明// /  @return 戻り値の説明void foo(int p1, int p2) {}

コードの右側にドキュメントコメントを配置するには、追加の<マーカーが必要です。[18]これにより、以下に示すように、パラメータをドキュメント化するための代替アプローチが可能になります。

/* * *関数の説明 */void foo(int p1 /**<パラメータの説明*/, int p2 /**<パラメータの説明*/) {}

数式はLaTeXコマンドで指定できます。例:

/** * インライン方程式 @f$ e^{\pi i}+1 = 0 @f$ * 表示された方程式: @f[ e^{\pi i}+1 = 0 @f] */

C++ でのより完全な例:

/** * @file Time.cpp * @module org.wikipedia.util.Time * @brief Time クラス* @author John Doe <[email protected]> * @version 1.0 * @copyright CC BY-SA または GFDL * @sa <a href="https://en.wikipedia.org/wiki/Wikipedia:Copyrights">Wikipedia:著作権 - ウィキペディア</a> */エクスポートモジュールorg.wikipedia.util.Time ;  org.wikipedia.coreインポートます。org.wikipedia.util.Dateインポートます  org :: wikipedia :: core :: ISerializableを使用します /** * @namespace org::wikipedia::util * @brief ユーティリティクラスの名前空間*/ export namespace org :: wikipedia :: util {   /** * @class Time * @brief 時点を表します* @author John Doe * * Time クラスは、UNIX エポックからの経過時間を表します。 * * @extends Date * @implements ISerializiable */ class Time : public Date , public ISerializable { private : int64_t millis ; ///< 1970 年 1 月 1 日からのミリ秒public : /**  * 1970 年 1 月 1 日からの期間を持つ新しい Time を構築します * @param millis ミリ秒数 */ explicit Time ( int64_t millis ) : millis { millis } {}                  /**  * 現在の時刻で新しいインスタンスを取得します * @return Instance  */ [[ nodiscard ]] static Time now () { // ... }        /**  * Time オブジェクトで表されるミリ秒数を取得します * @return ミリ秒数を表す int64_t  */ [[ nodiscard ]] int64_t getTime () const noexcept { return millis ; } };         }

参照

参考資料

  1. ^ アナウンス:doxygen 0.1 2011年10月4日アーカイブ、Wayback Machineにて。C ++ドキュメントシステムDoxygenの最初のリリースを発表。、Dimitri van Heesch氏、1997年10月26日(日)、Qt-interestアーカイブ
  2. ^ 「Doxygenリリース1.15.0」。2025年10月22日。 2025年10月23日閲覧
  3. ^ 「Doxygenマニュアル: よくある質問」www.doxygen.nl
  4. ^ Perkel, Jeffrey M. (2015年11月22日). 「Get With the Program: DIY tips for adding coding to your analysis arsenal(プログラムに習熟する:分析ツールにコーディングを追加するためのDIYヒント)」The Scientist (ジャーナル). The Scientist.
  5. ^ Sabin, Mihaela (2015年11月22日). 「Doxygen」. OpenComputing ( Wiki ). ニューハンプシャー大学. 2015年11月23日時点のオリジナルよりアーカイブ。
  6. ^ "Doxygen".フリーソフトウェアディレクトリ( Wiki ). 2015年11月22日.
  7. ^ 「ドキュメント」Rosetta Code ( Wiki ). 2015年11月22日.
  8. ^ "Documentation: C". Rosetta Code ( Wiki ). 2015年11月22日.
  9. ^ 「Documentation: Objective-C」. Rosetta Code ( Wiki ). 2015年11月22日.
  10. ^ 「Doxygen::Filter::Perl - Doxygen用のPerlコードプレフィルター - metacpan.org」。metacpan.org
  11. ^ ab 「Doxygenマニュアル:はじめに」。www.doxygen.nl
  12. ^ 「自動Python APIドキュメント生成ツール」. python.org wiki ( Wiki ). 2015年11月22日.
  13. ^ Brown, Eric W. 「doxypypy: Python 用の Doxygen フィルター」 – PyPI 経由。
  14. ^ "doxygen/doxygen". 2021年6月9日 – GitHub経由.
  15. ^ 「Doxygenマニュアル:グラフとダイアグラム」www.doxygen.nl
  16. ^ Doxygen: 特殊コマンド
  17. ^ Doxygen: コードのドキュメント化 - §C系言語のコメントブロック
  18. ^ Doxygen: コードのドキュメント化 - §メンバーの後にドキュメントを配置する
  • 公式サイト
「https://en.wikipedia.org/w/index.php?title=Doxygen&oldid=1309084453」から取得