Doxygen の警告・エラーメッセージに対する ANSI カラーコード着色機能の有無について調査を実施しました。
Doxygen には、警告やエラーメッセージを着色する機能は実装されていません。
2022 年 1 月に GitHub Issue #9038 にて機能要望が提出されていますが、2025 年 11 月時点でも未実装の状態です。
Doxygen 本体に機能がないため、外部フィルタースクリプトによる着色を実装しました。
誤検知を防ぐため、以下のパターンでマッチングを行います。
error: (前後にスペースを含む)warning: (前後にスペースを含む)スペースを含めることで、コード内の文字列や変数名との誤マッチを防止します。
ANSI カラーコードを使用して、ターミナル出力に色を付けます。
\033[0;31m)\033[0;33m)\033[0mDoxyfile には以下の警告関連設定が存在します。
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_IF_INCOMPLETE_DOC = YES
WARN_NO_PARAMDOC = NO
WARN_IF_UNDOC_ENUM_VAL = NO
WARN_LAYOUT_FILE = YES
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LINE_FORMAT = "at line $line of file $file"
WARN_LOGFILE =
WARNINGS: 警告メッセージの有効化WARN_FORMAT: 警告メッセージのフォーマット ($file, $line, $text のプレースホルダーを使用)WARN_LOGFILE: 警告ログの出力先ファイル (空の場合は stderr に出力)Doxygen の出力をリダイレクトする際、バッファリングによって stdout と stderr の出力順序が入れ替わる問題が発生する可能性があります。
-b フラグを使用することで、この問題を回避できます。
doxygen -b > out.txt 2>&1本実装では、2>&1 でストリームを結合してフィルターに渡すため、バッファリング問題は発生しません。