doxygenの使い方

うちでは doxygen を導入して、そこそこに満足してます(成果はあがったのかよっ(w

ということで、簡単に、うちでの使い方を紹介してみようかなと。

インストール

Windows環境の方は、バイナリの setup.exe を拾って来れば簡単にインストール可能です

僕は、Linux でやっているんで、アーカイブファイルを拾ってきて、make かけます。

 

2002/07/01 現在の最新バージョン

www.doxygen.org→ メニューのSource → The source distribution で最新のソースを落とします。

1.2.16(2002/5/20)
ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.2.16.src.tar.gz

ダウンロードして展開したら、その後はとりあえず簡単にやれば万事OK。

$ tar zxvf doxygen-1.2.16.src.tar.gz
$ cd doxygen-1.2.16/
$ ./configure
$ make
$ sudo make install

doxygen は Graphviz というツール(に含まれる dot というコマンド)を使うとパワーアップするので、 併せて入れます。

http://www.research.att.com/sw/tools/graphviz/ → download でダウンロード。

1.8.5(????)
http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-1.8.5.tar.gz

 

僕は好みで、tarball を落としてきて、コンパイルかけてますが・・・

RPMがいい、という方はそれでも構わないと思います^^;


$ tar zxvf graphviz-1.8.5.tar.gz
$ cd graphviz-1.8.5/
$ ./configure
$ make
$ sudo make install

これで、準備完了です。

以下、doxygen や dot は既にパスの通っているところにある物として説明します。

#Win環境の方などは、適時設定をしてください。

 

設定

まずは、doxygen の設定ファイルを作ります。

doxygen は、実行時に、プロジェクト毎に作成する設定ファイルを読み込むのですが、 ぶっちゃけた話、プロジェクトが変わる毎に毎回毎回作成するのは面倒なので(ぉ

僕は適当に設定を弄ったファイルを元ファイルとして利用してますw

 

ドキュメント書きを楽したいのに、変なところで悩むのもいやですしね^^;

$ doxygen -g Doxyfile.org
$ grep -v \# Doxyfile.org | awk 'NF > 0' > Doxyfile

doxygen が作成してくれる Doxyfile は、コメントが多くて見辛いので、思い切って削除しますw

以後、Doxyfile.org に書いてある説明(や、Webで説明サイトを検索したり)を見ながら設定を変更していきます。

(当然、こうまでばっさり行くと、後で訳がわからなくなるのでセクション名程度の説明は追加します)

 

とりあえず、大まかに設定を行います。

重要そうなのは・・・

PROJECT_NAME
プロジェクト名
OUTPUT_LANGUAGE
日本人なので、’Japanese’ を選択します:p
GENERATE_HTML
とりあえず、HTMLファイルを生成してほしいのでYES(Default)
GENERATE_LATEX
興味ないからNOに変更
HAVE_DOT
せっかくインストールしたので、YES に変更
DOT_PATH
PATHの通っているところにあるんですけど、一応設定

細かい設定内容ははしょります(ぉ

このページの一番下の、「ネタ元」辺りでも見て、勉強してください^^;

一応、参考に・・・・僕の使ってる Doxyfile (2002/07/01)

僕は、このファイルの ‘PROJECTNAME’, ‘PROJECTNUMBER’ だけ変えて使い回してます。

 

コメントのdoxygen化

とりあえず、ここでは家のコメントの付け方を紹介します。

これを見て、自分のやりたいようにコメント付けをするのが良いと思います。

 

ファイルコメント

/******************************************************************************/
/*! @file
    @brief  ファイルの説明

        briefだけで足りない場合はここにも説明

    @author ksworks
    @date   日付

    $ Id : $
 ******************************************************************************/

必要最低限の情報以外はいらないと思ってます。

#逆に言えば、これくらいは最低限度必要かなと。

 

クラスコメント

/*----------------------------------------------------------------------------*/
/*    クラス名                                                                */
/*----------------------------------------------------------------------------*/
/*! @brief  てきとーなクラス

    何の為に使うかとか、何が必要かとかそういう詳しい情報を書く。

    @todo   てきとーすぎる。
    @bug    あらゆる面でバグい。

 */
class
hoge
{
private:
    //! メンバの説明
    int     foo;
protected:
    //! ここも説明
    int     bar;
public:
    //! クラスコンストラクタ
    hoge  ();
    //! クラスデストラクタ
    ~hoge ();

    //! 何かを取得する
    bool get ( int nget );
};

クラス名まで doxygen で拾う必要は無いけど、あった方が何となく格好よく見えるのでw

メンバ変数の説明は、必要があれば簡易・詳細両方書きます。

メンバ関数の説明は、詳細は関数前に書きます。

 

関数コメント

/*----------------------------------------------------------------------------*/
/*    hoge::get                                                               */
/*----------------------------------------------------------------------------*/
/*! ほげほげな入力を取得します。

    @param nget     入力する数の指定とか?

    @retval true    入力ができた
    @retval false   入力ができなかった
 */
bool
hoge::get ( int nget )
{
    ...;
}

関数の詳細と引数・返値(boolは上の様に分けますが、enum 等の場合は単に @return にしたりします。

 

ネームスペース

/*! @namespace hoge
        @brief  ほげな名前空間

    ほげほげうにゅうにゅ
 */

ネームスペースは、関連ファイルに分割されることが多い(少なくとも僕の場合)ので、 関連ファイルが共通に見るファイルで上の様に定義します。

 

実際に使っている部分でもコメントは書きますが、doxygen で拾わないようにしてます。

 

因みに、自分自身の名誉の為に書きますが、本物のソースはちゃんとコメント書いてますw

 

ネタ元