feat(hako_check): Improve usability with debug output filtering

Phase 1 実装: デバッグ出力ノイズを除去して、実際の lint 結果を見やすく

改善内容:
1. デバッグ出力の自動フィルタリング (デフォルト有効)
   - [DEBUG/...] 系の出力を全て除去
   - [ControlForm::...] 制御フロー出力を除去
   - [BUILDER] MIR ビルダー出力を除去
   - [rule/exec] ルール実行出力を除去

2. 環境変数サポート追加
   - HAKO_CHECK_DEBUG=1 で詳細デバッグ出力有効化
   - HAKO_CHECK_VERBOSE=1 で詳細モード有効化(将来実装予定)

3. 実際の エラーメッセージが明確に見える
   - 修正前: 大量の [DEBUG] 出力に埋もれて見えない
   - 修正後: [ERROR] メッセージが直接見える

実行例:
```bash
# デフォルト: クリーンな出力
./tools/hako_check.sh file.hako
[ERROR]  MIR compilation error: Undefined variable: void
[lint/summary] failures: 1

# デバッグモード: 詳細情報表示
HAKO_CHECK_DEBUG=1 ./tools/hako_check.sh file.hako
[DEBUG/build_block] Processing 3 statements
[ControlForm::Loop] entry=BasicBlockId(2) ...
```

次のステップ (Phase 2, 3):
- Rust 側のデバッグ出力環境変数制御化
- エラーメッセージの構造化とヒント表示

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-04 19:15:37 +09:00
parent c86b6e3baa
commit dd314a0a72

View File

@ -78,10 +78,18 @@ run_one() {
HAKO_ENABLE_USING=1 \ HAKO_ENABLE_USING=1 \
NYASH_USING_AST=1 \ NYASH_USING_AST=1 \
NYASH_NY_COMPILER_TIMEOUT_MS="${NYASH_NY_COMPILER_TIMEOUT_MS:-8000}" \ NYASH_NY_COMPILER_TIMEOUT_MS="${NYASH_NY_COMPILER_TIMEOUT_MS:-8000}" \
HAKO_CHECK_DEBUG="${HAKO_CHECK_DEBUG:-0}" \
HAKO_CHECK_VERBOSE="${HAKO_CHECK_VERBOSE:-0}" \
"$BIN" --backend vm "$ROOT/tools/hako_check/cli.hako" -- "${args_arr[@]}" --format "$FORMAT" $EXTRA_ARGS \ "$BIN" --backend vm "$ROOT/tools/hako_check/cli.hako" -- "${args_arr[@]}" --format "$FORMAT" $EXTRA_ARGS \
>"/tmp/hako_lint_out_$$.log" 2>&1 || true >"/tmp/hako_lint_out_$$.log" 2>&1 || true
local out rc local out rc
out="$(cat "/tmp/hako_lint_out_$$.log")"; rc=0 out="$(cat "/tmp/hako_lint_out_$$.log")"; rc=0
# Phase 1: Filter out debug noise unless HAKO_CHECK_DEBUG=1
if [ "${HAKO_CHECK_DEBUG:-0}" != "1" ]; then
out="$(echo "$out" | grep -v '^\[DEBUG' | grep -v '^\[ControlForm::' | grep -v '^\[BUILDER\]' | grep -v '^\[rule/exec\]')"
fi
# Extract RC # Extract RC
if echo "$out" | grep -q '^RC: '; then if echo "$out" | grep -q '^RC: '; then
rc="$(echo "$out" | sed -n 's/^RC: //p' | tail -n1)" rc="$(echo "$out" | sed -n 's/^RC: //p' | tail -n1)"