トラブルシューティング
既知の問題点
-
Doxygenは、字句解析はしますが、コンパイラではありません。つまり、あなたのソースコードの誤りを認識する能力はありません。
-
Doxygenには、プリプロセッサが組み込まれていますが、Cプリプロセッサとは少し働きが違います。Doxygenは、以下のことを想定しています。ヘッダファイルの重複includeに対してガードされている、各includeファイルは独立(つまり、ソースファイルの先頭に置かれてもエラーが起きない)。 上記の条件が満たされていれば(そのように設計するのが望ましい)、問題には遭遇しないはずです。
-
ソースから doxygen をビルドする上での問題であれば、まずは こちらのセクション を読んでください。
-
ありうるすべてのコードの断片をテストすることは不可能なので、 大いに起こりうることとして、C C++ のコードの一部が上手く処理できないケースがありえます。 そんなケースを見つけたときこちらへ送付してくだされば、doxygen の解析能力を あげることができます。尚、送られるコードは、調査範囲が絞りやすいように できるだけ小さくしてください。
-
同じ名前のクラスや構造体、共用体が複数あると、doxygen はうまく働きません。 しかしクラッシュはしてはいけません。ひとつを除いて他の同名のクラスを無視するはずです。
-
他のコマンドの引数にすると働かないコマンドがあります。 たとえばHTML リンク(<a href="...">...<a>)の中では 他のコマンド(他のHTMLコマンドを含め)は働きません。セクションわけするコマンドは 重要な例外です。
-
括弧が冗長になると、doxygen が混乱することがあります。 例えば:
void f (int);
なら関数宣言として解析できますが、 const int (a);
とすると、int
という名前の関数宣言ともとれます。 それは、構文しか解析せず、意味は解析しないからです。 int *(a[20]);
このように冗長な括弧が認識できるときは、括弧を削除してそれを正確に解析します。
-
ドキュメントに含まれるコード断片の中に見つかる名前のすべてが、リンク (たとえば、SOURCE_BROWSER
= YES
のとき)で置き換えられるというわけではありません。 また、オーバーロードされたメンバーへのリンクが違うメンバーをさすということもありえます。 また、各関数について生成される"Referenced by(被参照)"リストにもこの現象が起こりえます。
こういった現象の原因は、コード解析能力の不足にあり、いずれ改善できると考えています。 しかしそれでもすべてが正しいドキュメントへリンクするとはいえません。なぜなら、コード断片 が見つかった箇所にあいまいさや情報の不足がありうるからです。
-
クラスAにfという名のメンバーがある場合、同じ引数リストの非メンバー関数fを、 \relates や \relatesalsoコマンドを使って挿入することはできません。
-
メンバーの特殊化は、ほんの一部しかサポートできません。 特殊化されたテンプレートクラスがある場合しか働きません。
-
特殊コマンド全部がRTFにうまく翻訳できるわけではありません。
-
バージョン1.8.6以前のdotでは、マップファイルがうまく生成されないので、生成されたグラフがクリックできないことがあります。
-
PHPだけの現象ですが、すべての文(コード)が関数またはメソッド内にラップされていないと、解析できないことがあります。
ヘルプ方法
doxygen の開発は、ユーザのご意見によって大きく左右されます。
doxygen を使ってみて思われたことをお知らせください(機能が足りませんか?)。 もし使わないと決めた場合は、理由を教えてください。
バグレポートの方法
バグはGNOMEのbugzillaデータベースにトラックされています。 新しいバグを提出する前に、 データベース検索して、同じバグが提出済みでないかチェックしてください。 新しいバグと判断できたら、報告してください。
バグなのかどうか不安な場合は、ユーザメーリングリストでヘルプを求めてください(サブスクリプションが必要です)。
バグの(漠然とした)説明だけを送るのは、通常あまり役立ちません。それでは私が意味を理解するのに時間を浪費するだけです。 最悪の場合、バグリポートを無視することもありえますので、次の情報をリポートに含めるようにしてください。
- 使っておられるdoxygenのバージョン(1.5.3など, 分からない場合は
doxygen –version
で確かめてください)
- OSの名前とバージョン番号(SuSE Linux 6.4など)
- 設定ファイルを一緒に送ることは通常良い考えですが、設定ファイルを小さくするため
-s
フラグをつけてdoxygenを使ってください (既存の設定ファイルからコメントを除去するにはdoxygen -s -u [configName]
を使用してください)
- バグを改修するもっとも簡単な(大抵の場合これしかない)方法は、問題を立証する小さな例題をバグリポートに付けていただくことです。 こちらで問題を再現できるからです。例題は有効なコード(実際にコンパイルできる)で作ってください。そして例題によって正確に再現できるようにしてください(実際のバグを起こさない例題を受けることが多いです)。複数のファイルを送られる場合は、処理しやすいよう、zip や tar で圧縮して単一のファイルにしてください。 新しいバグをリポートされる際、ファイルの添付は、最初にバグに関する記述を提出してから でないとできません。
バグにパッチを追加することができます。その場合は、バグ登録フォームにPATCHをキーワードとしてお使いください。
現存のバグを改修する方法についてアイデアがある場合は、開発者メーリングリスト で議論してください(サブスクリプションが必要です)。 バグトラッカーやメーリングリストを通じてパッチを送るのがいやな場合は、dimitri@stack.nl に直送してもかまいません。
パッチについては、"diff -uN"を使うか変更したファイルを含めてください。 複数のファイルを送る場合は、tar やzip で圧縮して、ひとつのファイルだけ保存・ダウンロード すれば済むようにしてください。
インデックス に戻る