feat(hako_check): Phase 153 - Dead code detection revival (JoinIR version)

Implement comprehensive dead code detection for hako_check with JoinIR
integration, following Phase 133/134/152 box-based modularity pattern.

## Key Achievements

1. **Comprehensive Inventory** (`phase153_hako_check_inventory.md`):
   - Documented current hako_check architecture (872 lines)
   - Analyzed existing HC011/HC012 rules
   - Confirmed JoinIR-only pipeline (Phase 124)
   - Identified Phase 153 opportunities

2. **DeadCodeAnalyzerBox** (`rule_dead_code.hako`):
   - Unified HC019 rule (570+ lines)
   - Method-level + box-level dead code detection
   - DFS reachability from entrypoints
   - Text-based analysis (no MIR JSON dependency for MVP)
   - Heuristic-based false positive reduction

3. **CLI Integration** (`cli.hako`):
   - Added `--dead-code` flag for comprehensive mode
   - Added `--rules dead_code` for selective execution
   - Compatible with --format (text/json-lsp/dot)

4. **Test Infrastructure**:
   - HC019_dead_code test directory (ng/ok/expected.json)
   - `hako_check_deadcode_smoke.sh` with 4 test cases

## Technical Details

- **Input**: Analysis IR (MapBox with methods/calls/boxes/entrypoints)
- **Output**: HC019 diagnostics
- **Algorithm**: Graph-based DFS reachability
- **Pattern**: Box-based modular architecture
- **No ENV vars**: CLI flags only

## Files Modified

- NEW: docs/development/current/main/phase153_hako_check_inventory.md
- NEW: tools/hako_check/rules/rule_dead_code.hako
- MOD: tools/hako_check/cli.hako
- NEW: tools/hako_check/tests/HC019_dead_code/
- NEW: tools/hako_check_deadcode_smoke.sh
- MOD: CURRENT_TASK.md

## Next Steps

- Phase 154+: MIR CFG integration for block-level detection
- Phase 160+: Integration with .hako JoinIR/MIR migration

🤖 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 14:19:48 +09:00
parent d75bbf4f90
commit c85d67c92e
19 changed files with 1388 additions and 8 deletions

View File

@ -45,6 +45,38 @@
---
## 📌 Docs マップ(トップレベルとステータス)
新しくドキュメントを書くときや、どこに置くか迷ったときはこの表を基準にする。
| パス | 用途 | 主な対象 | ステータス |
|------|------|----------|------------|
| `reference/` | 言語仕様・正式なリファレンス | 利用者 / 実装者 | **Active / SSOT** |
| `guides/` | チュートリアル・長めの読み物 | 利用者 / 新規開発者 | **Active** |
| `how-to/` | 手順書・レシピ集 | 日常開発 | **Active** |
| `quick-reference/` | コマンドやオプションの早見表 | 日常参照 | **Active** |
| `development/` | Rust 実装側の設計・ロードマップ | コア開発者 | **ActiveRust層** |
| `private/` | 将来の整理待ちのメモ・長文案 | コア開発者 | **Draft / Incubator** |
| `design/` | 公開可能な安定寄り設計ノート | 実装者 | **Active安定設計** |
| `architecture/` | 全体アーキテクチャの俯瞰図 | 実装者 / 設計者 | **Active** |
| `abi/` | Nyash/Hakorune ABI 関連 | 実装者 | **Active** |
| `specs/` | 古めの仕様・実験的仕様 | 実装者 | **Legacy必要に応じ参照** |
| `checklists/` | レビュー・設計チェックリスト | 実装者 | **Active** |
| `tools/` | ドキュメント生成・補助スクリプト | 実装者 | **Active** |
| `updates/` | リリースノート・変更履歴 | 利用者 / 実装者 | **Active** |
| `releases/` | リリース関連ドキュメント | 利用者 | **Active** |
| `archive/` | 旧ドキュメント・歴史資料 | 研究・考古学用 | **Archived正本ではない** |
| `assets/` | 画像などの共有アセット | すべて | **Support** |
| `ENV_VARS.md` | 環境変数リファレンス | 実装者 / 運用者 | **Active集約先** |
運用ルール(提案):
- **新規仕様/設計**: まずは `private/` に置き、安定したら `reference/` or `design/` へ昇格する。
- **Rust 実装寄りの話**: `development/` 配下に置く(セルフホスト側は `private/roadmap` 等)。
- **古い資料・置き換え済み**: 内容を変えずに `archive/` 以下へ移動し、先頭に「Archived / 新しい場所」の一行メモを書く。
- **ユーザー向けに見せたいもの**: `guides/`, `how-to/`, `quick-reference/`, `releases/` を優先する。
---
## 🎯 クイックアクセス
### すぐ始める