web-dev-qa-db-ja.com

TODOおよびFIXMEラインを認識するようにDoxygenを簡単に構成できますか?

Doxygenのインスタンスをインストールしてセットアップしたばかりですが、箱から出して、次のようなブロックでマークされている場合にのみ、コード内のTODOタグが見つかります。

/**
 * @todo Foo
 */

見つからないようです:

// TODO Foo
// FIXME Bar
// @todo Baz

解析を処理するほとんどのIDEとバグトラッカーは問題ありませんが、Doxygenを構成してそれらを検索し、ToDoアイテムとしてリストする簡単な方法はありますか?

26
Iain Collins

使用できる例と方法はいくつかあります。

  • 有効なdoxygenコマンド(例:\todo)を含む1行のコメントの場合、

    /// \todo Some (optional) text
    

    通常の2つではなく、3つのスラッシュに注意してください。 doxygenドキュメントの 特別なドキュメントブロック セクションの2番目のリストのポイント3を参照してください。これを使用して、新しいToDoアイテムをソースコードに追加できます。

  • 一般に、Doxygen構成ファイルでエイリアスを定義することにより、カスタムタグ(FIXMEなど)を定義できます。例えば

    ALIASES += FIXME="\todo"
    

    これにより、ソースコードに\FIXMEを記述でき、\FIXMEで始まるコメントが最終ドキュメントのToDoリストに含まれます。ここでの問題は、エイリアスの前に\(または@)記号を付け、コメントの先頭に3つのスラッシュを付ける必要があることです。これは、FIXMEsを残す場合に使用します。そのままのコードでは、オプションではありません。

  • 最後に、別の方法、そしてあなたが探していると思うのは、 INPUT_FILTER 構成ファイルオプションを使用してソースファイルを前処理することです。このオプションは、doxygenがドキュメントを作成する前に各ソースファイルに適用されるコマンドを定義するため、TODOFIXMEのインスタンスを有効なdoxygenマークアップに置き換えるコマンドを定義できます。

     INPUT_FILTER = "sed -e 's/\/\/.*FIXME/\/\/\/ \\todo/'"
    

    このフィルターは、// FIXMEのすべてのインスタンス(//FIXMEの間の任意の量の空白(または空白なし))を/// \todoに置き換えます。この置換は、doxygenによってのみ内部的に行われます。ソースファイルはディスク上で変更されません。

注:この最後のポイントは、質問に対する受け入れられた回答に触発されました doxygenタグとMSVC TODOタグを連携させる 。ただし、その回答では、FILE_VERSION_FILTERではなくINPUT_FILTER構成オプションが使用されていました。後者(INPUT_FILTER)が実際にはここでより適切だと思います。また、その回答で使用されているsedコマンドは私には機能しません。

41
Chris