Analyzer安定化完了: NYASH_DISABLE_PLUGINS=1復元 + plugin無効化根治

## 修正内容
1. **hako_check.sh/run_tests.sh**: NYASH_DISABLE_PLUGINS=1 + NYASH_BOX_FACTORY_POLICY=builtin_first追加
2. **src/box_factory/plugin.rs**: NYASH_DISABLE_PLUGINS=1チェック追加
3. **src/box_factory/mod.rs**: plugin shortcut pathでNYASH_DISABLE_PLUGINS尊重
4. **tools/hako_check/render/graphviz.hako**: smart quotes修正(parse error解消)

## 根本原因
- NYASH_USE_PLUGIN_BUILTINS=1が自動設定され、ArrayBox/MapBoxがplugin経由で生成を試行
- bid/registry.rsで"Plugin loading temporarily disabled"の状態でも試行されエラー
- mod.rs:272のshortcut pathがNYASH_DISABLE_PLUGINSを無視していた

## テスト結果
- 10/11 PASS(HC011,13-18,21-22,31)
- HC012: 既存issue(JSON安定化未完)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-11-08 15:49:25 +09:00
parent cef820596f
commit 772149c86d
26 changed files with 508 additions and 62 deletions

View File

@ -38,15 +38,39 @@ run_case() {
fi
# Build argv array for analyzer CLI (preserve newlines in text)
ARGS=( --debug --format json-lsp )
# Restrict rules to the target under test for stability
local base
base="$(basename "$dir")"
local rules_key=""
case "$base" in
HC011_*) rules_key="dead_methods" ;;
HC012_*) rules_key="dead_static_box" ;;
HC013_*) rules_key="duplicate_method" ;;
HC014_*) rules_key="missing_entrypoint" ;;
HC015_*) rules_key="arity_mismatch" ;;
HC016_*) rules_key="unused_alias" ;;
HC017_*) rules_key="non_ascii_quotes" ;;
HC018_*) rules_key="top_level_local" ;;
HC021_*) rules_key="analyzer_io_safety" ;;
HC022_*) rules_key="stage3_gate" ;;
HC031_*) rules_key="brace_heuristics" ;;
*) rules_key="" ;;
esac
if [ -n "$rules_key" ]; then ARGS+=( --rules "$rules_key" ); fi
if [ -f "$input_ok" ]; then ARGS+=( --source-file "$path_ok" "$text_ok" ); fi
if [ -f "$input_ng" ]; then ARGS+=( --source-file "$path_ng" "$text_ng" ); fi
# Directly invoke analyzer CLI with args via '--', avoid wrapper/FS
# Ensure plugin path is set
export LD_LIBRARY_PATH="${ROOT}/target/release:${LD_LIBRARY_PATH:-}"
NYASH_DISABLE_NY_COMPILER=1 HAKO_DISABLE_NY_COMPILER=1 \
NYASH_PARSER_STAGE3=1 HAKO_PARSER_STAGE3=1 NYASH_PARSER_SEAM_TOLERANT=1 HAKO_PARSER_SEAM_TOLERANT=1 \
NYASH_ENABLE_USING=1 HAKO_ENABLE_USING=1 NYASH_USING_AST=1 \
NYASH_DISABLE_PLUGINS=1 \
NYASH_BOX_FACTORY_POLICY=builtin_first \
NYASH_JSON_ONLY=1 \
"$BIN" --backend vm tools/hako_check/cli.hako -- "${ARGS[@]}" >"$tmp_out" 2>&1 || true
"$BIN" --backend vm "$ROOT/tools/hako_check/cli.hako" -- "${ARGS[@]}" >"$tmp_out" 2>&1 || true
# Extract diagnostics JSON (one-line or pretty block)
tmp_json="/tmp/hako_test_json_$$.json"
json_line=$(grep -m1 '^\{"diagnostics"' "$tmp_out" || true)