Doxygen(ドキシジェンまたはドクシジェン)は、C++、C言語、Java、C#、Objective-C、Fortran、Python、PHP、IDL[注釈 1]、VHDL、Lexに対応したドキュメンテーションジェネレータである。他にも、D言語でもある程度利用可能となっている[2]。多くのUnix系システム、Windows、macOSで動作する。Doxygenのコードの大部分は Dimitri van Heesch によって書かれた。
KDEは文書の一部にDoxygenを利用しており、KDevelopは組み込みでサポートしている。
Javadocのように、Doxygenはコンピュータ言語(プログラミング言語)のソースファイルをパースして、コメントから文書を抽出・変換・生成する。Javadocの文法に加えて、Qtツールキットで使われるドキュメンテーションタグをサポートしており、HTML形式だけでなく、CHM、RTF、PDF、LaTeX、PostScript、manページ形式の文書を生成できる。
統合開発環境 (IDE) の中には、プログラム要素に対して記述されたDoxygenコメントをもとに、ツールヒントでそのプログラム要素に関する情報を表示するものも存在する。コード入力補完の際に関数やメソッドの各パラメータに対する説明を適宜表示するものもある。
Doxygen の最初のバージョンは、Zuse Institute Berlinで Roland Wunderling と Malte Zöckler が開発した DOC++ の初期バージョンからコードを借用した。その後、Doxygen コードは Dimitri van Heesch によって書き直された。
以下のコード例は、Doxygenで文書生成可能な形式である。
/** * The time class represents a moment of time. * * \author John Doe */ class Time { public: /** * Constructor that sets the time to a given value. * \param timeMillis A number of milliseconds passed since Jan 1, 1970. */ explicit Time(long long timeMillis) { // ... } /** * Get the current time. * \return A time object set to the current time. */ static Time now() { // ... } };
コメント内にバックスラッシュ\またはアットマーク@で始まる「特殊コマンド」[3]とその引数 (argument) を記述することで、プログラムソースコード中の各構成要素に対する説明を記述した定形的な文書を自動生成することができる。いくつかの特殊コマンドはJavadocとも互換性があるが、Doxygenでしか使えない独自のものも多い。
\
@
この項目は、FOSSに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(Portal:FOSS)。