Pas2Dox (Pascal to Doxygen?)

Doxygen は Delphi にも何とか対応してます。
Pas2Dox というプリプロセッサ−を使用して、 Delphi のソースコードを
Doxygenが理解できる形式に変換することで間接的に
やっていることは、Doxygen が Delphi のソースを解析する前に、
Pas2Dox というプログラムを使って Doxygen が解析できる状態に変換してあげるだけです。

ダウンロードDownload

Pas2Dox のサイトは http://pas2dox.sourceforge.net/ にあります。

Pas2Dox のプログラム本体は以下の場所にあります。
http://sourceforge.net/projects/pas2dox/
そこから pas2dox.exe をダウンロードしてきます。
必須ではないですが、pas2dox-0.41.tar.gz もダウンロードしておくと、 ソースと一緒に簡単なドキュメント(readmeとか)が付いているので参考になるかもしれません。
※2003/12/28 現在のPas2Doxの最新版は pas2dox 0.41 です。

セットアップSetup

pas2dox.exe を Doxygen をインストールしたディレクトリにコピーします。
(実は先ほどダウンロードしたpas2dox.exe、プログラム本体です。なので解凍不要。)
doxygen.exe などといっしょのディレクトリです。
例:C:\Program Files\doxygen\bin

Doxygen をインストールすると、Doxygen に必要な実行ファイルのあるディレクトリが 勝手にパスに追加されるので、セットアップはこれだけでOKです。

クイックスタートQuickStart

[Start] - [Programs] - [doxygen] - [Doxywizard]
で、まず Doxywizard を実行します。

はじめに Doxygen の設定ファイル Doxyfile を保存してしまいます。
[File] - [Save as ...]
を選んで、Delphiのソースがあるディレクトリに Doxyfile を保存します。

C/C++などの場合と違って、これだけではまだ何も作成できません。

以下の設定をします:(Pas2Dox の readme に書いてある分)
[Input] - [INPUT] . (←ドット 入力後は"+"ボタンを押すのを忘れずに!)
[Input] - [FILE_PATTERNS] *.pas (入力後は"+"ボタンを押すのを忘れずに!)
[Input] - [INPUT_FILTER] "C:\Program Files\doxygen\bin\pas2dox.exe" ("" も付けよう!)
[Input] - [FILTER_SOURCE_FILES] YES
さらに以下の設定をします:(Pas2Dox の readme に書いてない分)
[Build] - [EXTRACT_ALL] YES
[Build] - [EXTRACT_PRIVATE] YES
[Build] - [EXTRACT_STATIC] YES
[Build] - [EXTRACT_LOCAL_CLASSES] YES

これぐらいはあった方が、それらしいドキュメントになります。

[Doxygen] - [Run]
で、Doxygen を実行してみてください。

なんとかクラス内のメソッド一覧は作成されます。
(普通の関数の一覧は作成されないのは謎です。現在調査中。)

Doxygen用の特殊なコメントを埋め込む

Doxygen に解析してほしいコマンドが埋め込まれているコメントは、
‘{*’ ではじまる必要があります。

埋め込むコメントの例は下の用は感じです。

CORRECT:(よい例)
{* Create New Object
 *
 * @param TObject An object
 * @autor Kabo
 }
 procedure BtnNewClick(Sender: TObject);

{* Create New Object
   @param TObject An object
   @autor Kabo
 }
 procedure BtnNewClick(Sender: TObject);

{* Create New Object

   @param TObject An object
   @autor Kabo
 }
 procedure BtnNewClick(Sender: TObject);

INCORRECT:(悪い例)
{ Create New Object

  @param TObject An object
  @autor Kabo
 }
 procedure BtnNewClick(Sender: TObject);

{ * Create New Object

  @param TObject An object
  @autor Kabo
 }
 procedure BtnNewClick(Sender: TObject);


悪い例の理由:
Doxygenに解析してほしいコマンドは‘{*’ではじまる コメント内に書く必要があるからです。
‘{’ と ‘*’ の間にはスペースを空けてはダメです。
Pas2Dox が ‘{’ を ‘/*’ に置き換えるので、 ‘{*’ を ‘/**’ と置き換えてもらうためには
‘{’ と ‘*’ の間のスペースは都合が悪いんです。
‘{ *’とすると‘/* *’ となってDoxygen に解析してもらえないからです。


Delphiつながり

DUnit : エクストリームプログラミングの強力なツール xUnit for Delphi