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

272 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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週間
---
## 📊 進捗状況
### 完了チェックリスト
**設計フェーズ**
- [x] 実現可能性調査Task 8
- [x] アルゴリズム設計Task 9
- [x] 重複検出設計Task 10
- [x] Phase 32 計画作成
- [x] 構造改訂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
```bash
# 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 のリスク & 対策セクション
### 関連ドキュメント
- [Phase 32 README](./README.md) - 概要アーキテクチャ改訂版
- [Phase 32 PLAN](./PLAN.md) - 7日間実装計画改訂版
- [MVPサマリー](../../development/proposals/analyzer-mvp-summary.md)
- [アルゴリズム設計](../../development/proposals/dead-code-detection/call-graph-algorithm-detailed-design.md)
- [実装ガイド](../../development/proposals/analyzer-implementation-guide.md)
---
**最終更新**: 2025-10-19構造改訂版
**次回レビュー**: 2025-10-20 (Day 1完了時)