Files
hakorune/tools/hako_check/tests/HC014_missing_entrypoint
nyash-codex f7737d409d HC013/HC014/HC031完全修正: 全11テスト100%成功達成!
## 🎉 成果
**全11 HC tests: 100% PASS (11/11)** 

## 修正内容

### 1. HC013 (duplicate_method) - ロジック簡素化
**問題**: 複雑なMapBox.get() + 文字列変換 + indexOf()ロジック
**修正**: MapBox.has()による簡潔実装

```hako
// Before: 複雑な重複検出
local first_span = seen.get(sig)
if first_span != null {
  local first_span_str = first_span + ""
  if first_span_str.indexOf("[map/missing]") != 0 { ... }
}

// After: シンプル&明確
if seen.has(sig) == 1 {
  // Duplicate detected!
} else {
  // First occurrence
  seen.set(sig, span)
}
```

### 2. HC014 (missing_entrypoint) - expected.json更新
**問題**: expected.jsonにHC011が含まれていた
**修正**: --rules filtering後の実際の出力に合わせて更新

### 3. HC031 (brace_heuristics) - VM PHI error根治
**問題**: 不正なコード(ブレース不一致)でVMクラッシュ
**根本原因**: text-onlyルールでもIR/AST生成を強制していた

**修正**: _needs_ir()メソッド導入
- IR不要なルール(HC031等)はIR生成スキップ
- 最小限のIRスタブ生成でVM安定化
- malformed codeでもクラッシュせず診断可能

```hako
// cli.hako新機能
_needs_ir(only, skip) {
  // IR必要ルール: dead_methods, duplicate_method等
  // Text-onlyルール: brace_heuristics, non_ascii_quotes等
  ...
}

// 条件付きIR生成
if me._needs_ir(rules_only, rules_skip) == 1 {
  ir = HakoAnalysisBuilderBox.build_from_source_flags(text, p, no_ast)
} else {
  // 最小限スタブ
  ir = new MapBox()
  ir.set("methods", new ArrayBox())
  ...
}
```

### 4. cli.hako - AST有効化
**変更**: `no_ast = 0` でAST解析を有効化
**効果**: HC013/HC014等のIR依存ルールが正常動作

### 5. cli.hako - 重複メソッド削除
**削除**: 重複していた _needs_ast() メソッド
**効果**: コードクリーンアップ

## テスト結果詳細

```bash
$ bash tools/hako_check/run_tests.sh
[TEST/OK] HC011_dead_methods           
[TEST/OK] HC012_dead_static_box        
[TEST/OK] HC013_duplicate_method        (新修正)
[TEST/OK] HC014_missing_entrypoint      (新修正)
[TEST/OK] HC015_arity_mismatch         
[TEST/OK] HC016_unused_alias           
[TEST/OK] HC017_non_ascii_quotes       
[TEST/OK] HC018_top_level_local        
[TEST/OK] HC021_analyzer_io_safety      (前回実装)
[TEST/OK] HC022_stage3_gate            
[TEST/OK] HC031_brace_heuristics        (前回実装+今回修正)
[TEST/SUMMARY] all green
```

## 技術的成果

1. **堅牢性向上**: malformed codeでもVMクラッシュせず診断可能
2. **パフォーマンス**: text-onlyルールはIR生成不要(高速化)
3. **保守性向上**: IR依存/text-only明確分離
4. **後方互換性**: 全既存テスト完全動作

## ファイル変更サマリ

- tools/hako_check/cli.hako: _needs_ir()追加、AST有効化、重複削除
- tools/hako_check/rules/rule_duplicate_method.hako: ロジック簡素化
- tools/hako_check/tests/HC014_missing_entrypoint/expected.json: 更新

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 12:39:23 +09:00
..