doxygen-colorize-output.sh 仕様

1 概要

doxygen-colorize-output.sh は、Doxygen の出力メッセージに ANSI カラーコードを適用し、エラーとワーニングを視覚的に区別しやすくするフィルタースクリプトです。

2 ファイルパス

doxygen-colorize-output.sh

3 実行権限

実行可能 (chmod +x)

4 機能

標準入力から受け取った各行を解析し、エラーまたはワーニングメッセージを検出して着色します。

4.1 着色ルール

メッセージタイプ 検出パターン ANSI カラーコード 表示色
エラー error: \033[0;31m 🔴 赤
ワーニング warning: \033[0;33m 🟡 黄
その他 (該当なし) (なし) デフォルト

5 実装詳細

5.1 ANSI カラーコード定義

RED='\033[0;31m'
YELLOW='\033[0;33m'
RESET='\033[0m'

5.2 処理フロー

処理フロー

5.3 マッチング条件

5.3.1 エラーの検出

if [[ "$line" == *" error: "* ]]; then

行内に error: (前後にスペースを含む) が含まれる場合にマッチします。

5.3.2 ワーニングの検出

elif [[ "$line" == *" warning: "* ]]; then

行内に warning: (前後にスペースを含む) が含まれる場合にマッチします。

5.4 誤検知の防止

スペースを含むパターンマッチングにより、以下のような誤検知を防止します。

  • 変数名: show_error_flag, warning_count
  • 関数名: print_error(), handle_warning()
  • コメント内の単語: // This is an error example

6 使用方法

6.1 makefile からの呼び出し

doxygen Doxyfile 2>&1 | ../doxyfw/doxygen-colorize-output.sh
  • 2>&1: stderr を stdout にリダイレクトして結合
  • |: パイプでフィルタースクリプトに渡す

6.2 終了コードの保持

doxygen Doxyfile 2>&1 | ../doxyfw/doxygen-colorize-output.sh;
DOXYGEN_EXIT=${PIPESTATUS[0]};
exit $DOXYGEN_EXIT;

PIPESTATUS[0] を使用して、パイプの最初のコマンド (doxygen) の終了コードを取得し、ビルドの成否を正しく判定します。

7 出力例

7.1 着色前

/path/to/file.c:42: warning: undocumented parameter 'foo'
/path/to/file.c:100: error: invalid syntax
Normal output line

7.2 着色後

(ターミナルでは以下のように表示されます)

/path/to/file.c:42: warning: undocumented parameter ‘foo’
/path/to/file.c:100: error: invalid syntax
Normal output line

8 制限事項

8.1 ANSI カラーコード非対応環境

Windows コマンドプロンプトなど、ANSI カラーコードに対応していないターミナルでは、エスケープシーケンスがそのまま表示される可能性があります。

8.2 ログファイルへの出力

ANSI カラーコードを含む出力をファイルにリダイレクトすると、エスケープシーケンスがそのまま記録されます。

ログファイルに保存する場合は、以下のいずれかの方法を推奨します。

  • フィルターを適用せずに doxygen を直接実行
  • WARN_LOGFILE 設定を使用して Doxygen が直接ログファイルに出力

9 テスト方法

以下のコマンドでスクリプト単体のテストが可能です。

cat <<'EOF' | doxygen-colorize-output.sh
Normal output line
/path/to/file.c:42: warning: undocumented parameter 'foo'
Another normal line
/path/to/file.c:100: error: invalid syntax
More normal output
EOF

期待される結果: warning 行が黄色、error 行が赤色で表示されます。

10 関連ファイル

  • makefile: 本スクリプトを doxygen 実行時に適用
  • Doxyfile: Doxygen の警告フォーマット設定 (WARN_FORMAT)
  • docs-src/doxygen-colored-output-research.md: 調査結果と背景情報