diff --git a/CLAUDE.md b/CLAUDE.md index 31b8c23f..38ae3de1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -55,6 +55,45 @@ done - **解決**: `BTreeSet`/`BTreeMap`で決定的イテレーション保証 - **残課題**: `variable_map: HashMap` (builder.rs等) +#### 🔍 **hako_check - セルフホスティング.hako品質チェック** (Phase 153復活!) + +**hako_check ツール**はセルフホスティングコンパイラの .hako ファイルをコード品質チェック! + +```bash +# 基本的な使い方 +./tools/hako_check.sh file.hako +./tools/hako_check.sh directory/ + +# 実用的な使い方 +./tools/hako_check.sh apps/selfhost-runtime/boxes_std.hako # 単発チェック +./tools/hako_check.sh apps/selfhost-runtime/ --dead-code # デッドコード検出 +./tools/hako_check.sh apps/selfhost-runtime/ --format json-lsp # エディタ統合用 + +# デバッグ情報が必要な時 +HAKO_CHECK_DEBUG=1 ./tools/hako_check.sh file.hako # [DEBUG] 出力を含める +``` + +**環境変数制御**: +- `HAKO_CHECK_DEBUG=0` (デフォルト): デバッグ出力フィルタリング(クリーンな出力) +- `HAKO_CHECK_DEBUG=1`: 詳細デバッグ出力([DEBUG/...], [ControlForm::...] 等を表示) +- `HAKO_CHECK_VERBOSE=1`: 詳細モード(将来実装予定) + +**検出ルール** (Phase 153): +- **HC011**: 呼ばれないメソッド(unreachable method) +- **HC012**: 参照されないスタティックボックス(dead static box) +- **HC019**: 到達不可能なコード(unreachable code / dead code) +- その他: arity mismatch など 15+ ルール + +**出力例**: +``` +[ERROR] ❌ MIR compilation error: Undefined variable: void +[lint/summary] failures: 1 +``` + +**次のステップ (Phase 2-3)**: +- Rust側のデバッグ出力環境変数制御化 +- エラーメッセージの構造化(ファイル:行番号表示、ヒント追加) + ### 🎊 **Phase 33-10完了!JoinIR If Lowering箱化モジュール化達成** (2025-11-27) - **✅ 箱化モジュール化完了**: if_dry_runner.rs作成(176行)、vm.rs 83行→9行(89%削減) - **✅ PHI guard実装**: 早期PHIチェック(パターンマッチング前)でJoinIR設計原則確立