Files
hakorune/docs/private/roadmap/phases/phase-32/INDEX.md

8.2 KiB
Raw Blame History

Phase 32 INDEX - Hakorune Static Analyzer MVP

Phase番号: 32 名称: Hakorune Static Analyzer - Dead Code Detector MVP 状態: 🟡 計画完了、実装準備中(構造改訂版) 期間: 2025-10-20 → 2025-10-27 (7日間) 優先度: HIGH Ring位置: Ring-1Meta/自己ホスト)


📚 ドキュメント構成

ファイル 説明 状態
README.md Phase概要・目標・アーキテクチャ改訂版 完成
PLAN.md 7日間詳細実装計画改訂版 完成
INDEX.md このファイル(ナビゲーション) 完成

🎯 Phase 32 概要

目標

HakoruneでHakoruneコードを解析する静的解析ツールデッドコード検出器の実装

スコープ

  • MIR JSONからデッドコード検出
  • Gate-C/AST Strict MIR前提の厳密解析
  • テキストレポート出力(診断サマリ)
  • 95%以上の精度目標

非スコープPhase 33以降

  • 重複コード検出Phase 33
  • 複雑度メトリクスPhase 34
  • マルチファイル解析Phase 35
  • JSON/DOT出力Phase 36

📋 実装計画サマリー

Day タスク 成果物 LOC
1 スケルトン作成 driver/ast_scan/mir_scan/report + README 180
2 MIR走査基盤 mir_scan_box.hako関数抽出 150
3 呼び出しグラフ構築 mir_scan_box.hako拡張Graph 250
4 BFS到達可能性 mir_scan_box.hako完成 300
5 レポート生成 report_box.hako完成 120
6 スモークテスト整備 3本happy/happy/負例) 180
7 セルフホスト解析 ドキュメント + 実用化 50
Total 1,230

🏗️ 成果物の場所

実装ファイル(改訂版)

selfhost/analyzer/
├── hako_module.toml           # exports 最小selfhost.analyzer.*
├── boxes/
│   ├── driver_box.hako        # 入口: 入力→走査→レポート
│   ├── ast_scan_box.hako      # AST Strict前提の走査
│   ├── mir_scan_box.hako      # Gate-C Strict MIR JSONの走査
│   └── report_box.hako        # 集計と文字列整形、出力
├── README.md                  # 責務/入出力/ENV/非対象
└── smokes/
    ├── analyzer_ast_strict_ok_vm.sh
    ├── analyzer_mir_gatec_ok_vm.sh
    └── analyzer_bad_mir_fail_vm.sh    # 負例・診断固定

ドキュメント

docs/private/roadmap/phases/phase-32/
├── README.md         # 本Phase概要改訂版
├── PLAN.md           # 実装計画(改訂版)
└── INDEX.md          # このファイル

設計ドキュメント(既存)

docs/development/proposals/
├── analyzer-mvp-summary.md                  # MVPサマリー
├── hakorune-static-analyzer-feasibility.md  # 実現可能性調査
├── analyzer-implementation-guide.md         # 実装ガイドSSOT要約をselfhost/analyzer/README.mdに
└── dead-code-detection/
    ├── call-graph-algorithm-detailed-design.md
    └── call-graph-visualization.md

🔗 関連Phase

前提Phase

  • Phase 12.7: continue実装
  • Phase 15: Everything is Box
  • Phase 20: Hakorune VM実装
  • Phase 31: Gate-C/AST Strict確立

後続Phase予定

  • Phase 33: 重複コード検出1週間
  • Phase 34: 複雑度メトリクス1週間
  • Phase 35: マルチファイル解析2週間
  • Phase 36: 可視化・出力2週間

📊 進捗状況

完了チェックリスト

設計フェーズ

  • 実現可能性調査Task 8
  • アルゴリズム設計Task 9
  • 重複検出設計Task 10
  • Phase 32 計画作成
  • 構造改訂selfhost/analyzer/ 配置確定)

実装フェーズ 🟡

  • Day 1: スケルトン作成
  • Day 2: MIR走査基盤
  • Day 3: 呼び出しグラフ
  • Day 4: BFS到達可能性
  • Day 5: レポート生成
  • Day 6: スモークテスト
  • Day 7: セルフホスト解析

検証フェーズ

  • 精度95%以上確認
  • 処理速度5秒以内確認
  • セルフホストコード実用化

🎓 学習リソース

selfhost/shared から再利用

  1. BoxHelpers - JSON解析パターン
  2. MirSchema - MIR構造定義
  3. JsonEmit - MapBox→JSON文字列変換

Rustコードベース参考箇所

  1. src/mir/optimizer.rs - デッドコード検出パターン
  2. src/mir/verification.rs - Callee型のパース
  3. src/mir/builder/ - MIR構築パターン

既存Hakoruneコード

  1. apps/selfhost-compiler/builder/rewrite/known.hako - continueの実例
  2. selfhost/shared/json/ - JSON処理パターン
  3. selfhost/hakorune-vm/ - MapBox/ArrayBox実践例

🚀 クイックスタート

今すぐ始めるDay 1

# 1. ディレクトリ作成
mkdir -p selfhost/analyzer/{boxes,smokes}

# 2. hako_module.toml作成
cat > selfhost/analyzer/hako_module.toml << 'EOF'
[package]
name = "selfhost.analyzer"
version = "0.1.0"

[exports]
driver = "boxes/driver_box.hako"
ast_scan = "boxes/ast_scan_box.hako"
mir_scan = "boxes/mir_scan_box.hako"
report = "boxes/report_box.hako"

[dependencies]
BoxHelpers = "selfhost.shared.box_helpers"
MirSchema = "selfhost.shared.mir.schema"
JsonEmit = "selfhost.shared.json.emit"
EOF

# 3. DriverBox スケルトン作成
cat > selfhost/analyzer/boxes/driver_box.hako << 'EOF'
using selfhost.analyzer.mir_scan as MirScanBox
using selfhost.analyzer.report as ReportBox

static box DriverBox {
  birth() {
    # 空のbirth
  }

  run_from_string(input, kind) {
    return "[DriverBox] Not implemented yet"
  }

  run_from_box(input, kind) {
    local result
    result = new MapBox()
    return result
  }
}
EOF

# 4. 残りのBoxスケルトンも同様に作成
# PLAN.md Day 1参照

💡 重要な設計判断

決定事項

  1. 配置: selfhost/analyzer/Ring-1: Meta/自己ホスト) - apps/toolsではない
  2. 責務分離: driver/ast_scan/mir_scan/report - 単一Boxではない
  3. 依存: selfhost/shared のみ - 外部I/Oなし
  4. Gate-C/AST Strict: 既定ON - 厳密型保証
  5. Fail-Fast: フォールバック禁止 - Silent failure なし
  6. テスト先行: ドキュメント→スモーク→実装

⚠️ 制約事項

  1. 外部I/Oなし - 入力は文字列/MapBoxのみ
  2. プラグイン化なし - 当面VM経由のみ
  3. CLI化なし - Phase 32では実装せず将来tools/に追加可能)

📈 成功メトリクス

メトリクス 目標値 測定方法
精度 >95% セルフホストコード手動検証
再現率 >90% 既知デッドコード検出率
処理速度 <5秒 1,000行ファイル解析
LOC ~1,230行 実装コード総量
テスト 3件以上 スモークテストhappy/happy/負例)

🏆 期待される成果

技術的成果

  1. 95%精度のデッドコード検出器
  2. cargo-udepsの15倍精度25% → 95%
  3. セルフホスト開発の加速

戦略的成果

  1. 論文ネタPLDI SRC / ICSE Demo
  2. Everything is Box のショーケース
  3. コミュニティ貢献

📞 サポート

質問・相談

  • 設計相談: docs/development/proposals/ 参照
  • 実装相談: README.md のアーキテクチャセクション
  • バグ報告: PLAN.md のリスク & 対策セクション

関連ドキュメント


最終更新: 2025-10-19構造改訂版 次回レビュー: 2025-10-20 (Day 1完了時)