---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 80
  claims_with_evidence: 78
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：babel-node単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：78 / 80、根拠なし：2
- 優先レビュー（高）
  1. **C-70 (kexec使用)**: kexecモジュールの動作は外部依存のため実機確認推奨
  2. **C-79 (エラー処理)**: エラーコードの種類（ERR_MODULE_NOT_FOUND等）の網羅性要確認

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/babel-node/src/split-args.ts` - 引数分割ロジック
- E-02: `packages/babel-node/src/program-setup.ts` - Commanderプログラム設定
- E-03: `packages/babel-node/src/_babel-node.ts` - REPL・eval・ファイル実行処理
- E-04: `packages/babel-node/src/babel-node.ts` - メインエントリーポイント、V8フラグ処理、spawn処理
- E-05: `packages/babel-node/data/node-flags-with-value.json` - Node.jsフラグデータ
- E-06: `packages/babel-node/test/split-args.test.js` - 既存テストケース参照

## 3) Claims と根拠の対応（レビューの主戦場）

### split-args.ts関連（C-01〜C-14）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | ファイル名のみの引数分割 | E-01: L6-46 splitArgs関数 | ○ |
| C-02 | プログラム引数とファイル名の分割 | E-01: L23-32 フラグ処理ロジック | ○ |
| C-03 | ユーザー引数の分割 | E-01: L44 userArgs = argv.slice(i) | ○ |
| C-04 | --セパレーター処理 | E-01: L17-21 explicitSeparator処理 | ○ |
| C-05 | -シングルハイフン処理 | E-01: L15 if (arg === "-") break | ○ |
| C-06 | nodeFlagsWithValue処理 | E-01: L26, E-05 | ○ |
| C-07 | extraOptionsWithValue処理 | E-01: L26 extraOptionsWithValue?.has(arg) | ○ |
| C-08 | -e/--evalでファイル名無視 | E-01: L34 nodeFlagsWithNoFile, L4 定義 | ○ |
| C-09 | -p/--printでファイル名無視 | E-01: L34 nodeFlagsWithNoFile, L4 定義 | ○ |
| C-10 | inspectコマンド処理 | E-01: L35-37 inspect処理 | ○ |
| C-11 | 空配列処理 | E-01: L43 条件分岐 | ○ |
| C-12 | 値がハイフンで始まる場合 | E-01: L28 !argv[i+1].startsWith("-") | ○ |
| C-13 | 末尾フラグ処理 | E-01: L44 userArgs処理 | ○ |
| C-14 | nodeFlagsWithValueエクスポート | E-01: L2 export const nodeFlagsWithValue | ○ |

### program-setup.ts関連（C-15〜C-23）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | collect基本動作 | E-02: L5-16 collect関数 | ○ |
| C-16 | collect累積動作 | E-02: L11-14 previousValue.push | ○ |
| C-17 | collect型チェック | E-02: L7 typeof value !== "string" | ○ |
| C-18 | collect空文字列処理 | E-02: L9 value.split(",") | ○ |
| C-19 | collect単一値処理 | E-02: L15 return values | ○ |
| C-20 | オプション定義確認 | E-02: L19-56 各option定義 | ○ |
| C-21 | --extensionsオプション | E-02: L36-40 collect使用 | ○ |
| C-22 | --onlyオプション | E-02: L26-30 collect使用 | ○ |
| C-23 | --ignoreオプション | E-02: L31-35 collect使用 | ○ |

### _babel-node.ts関連（C-24〜C-58）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-24 | replPlugin ExpressionStatement処理 | E-03: L56-58 hasExpressionStatement判定 | ○ |
| C-25 | replPlugin TLA検出 | E-03: L53 hasTopLevelAwait設定 | ○ |
| C-26 | replPlugin TLA変換 | E-03: L70-78 ReturnStatement変換 | ○ |
| C-27 | replPlugin Export禁止 | E-03: L60-65 エラースロー | ○ |
| C-28 | replPlugin Import禁止 | E-03: L61-65 エラースロー | ○ |
| C-29 | replPlugin undefined追加 | E-03: L85-90 pushContainer | ○ |
| C-30 | _eval基本動作 | E-03: L95-117 _eval関数 | ○ |
| C-31 | _eval空コード処理 | E-03: L97 if (!code) return undefined | ○ |
| C-32 | _eval空白コード処理 | E-03: L96 code = code.trim() | ○ |
| C-33 | _eval TLAラップ | E-03: L110-112 async IIFEラップ | ○ |
| C-34 | _eval Babel変換 | E-03: L101-108 babel.transformSync | ○ |
| C-35 | _eval構文エラー | E-03: L101 babel.transformSync | ○ |
| C-36 | replEval基本動作 | E-03: L202-233 replEval関数 | ○ |
| C-37 | replEval括弧除去 | E-03: L213-215 slice処理 | ○ |
| C-38 | replEval TLA Promise解決 | E-03: L222-229 Promise処理 | ○ |
| C-39 | replEval TLA Promise拒否 | E-03: L227-229 catch処理 | ○ |
| C-40 | replEval実行時エラー | E-03: L218-220 catch(e) | ○ |
| C-41 | replStart起動 | E-03: L235-248 replStart関数 | ○ |
| C-42 | replStartプロンプト | E-03: L237 prompt: "babel > " | ○ |
| C-43 | replStartヒストリー | E-03: L244-247 setupHistory | ○ |
| C-44 | requireArgsモジュール読み込み | E-03: L193-201 requireArgs関数 | ○ |
| C-45 | requireArgs未設定時 | E-03: L194 if (opts.require) | ○ |
| C-46 | requireArgsモジュール不存在 | E-03: L195-199 require.resolve | ○ |
| C-47 | evalモード実行 | E-03: L119-140 opts.eval処理 | ○ |
| C-48 | printモード実行 | E-03: L137-140 opts.print処理 | ○ |
| C-49 | 文字列出力 | E-03: L138 typeof result === "string" | ○ |
| C-50 | オブジェクト出力 | E-03: L138 inspect(result) | ○ |
| C-51 | 相対パス変換 | E-03: L177-179 path.join | ○ |
| C-52 | 絶対パス処理 | E-03: L177 path.isAbsolute | ○ |
| C-53 | process.argv設定 | E-03: L182 process.argv設定 | ○ |
| C-54 | Module.runMain実行 | E-03: L185 Module.runMain() | ○ |
| C-55 | REPL起動条件 | E-03: L186-189 else分岐 | ○ |
| C-56 | undefined除去 | E-03: L40-44 deleteループ | ○ |
| C-57 | babelrc true処理 | E-03: L37 三項演算子 | ○ |
| C-58 | babelrc false処理 | E-03: L37 三項演算子 | ○ |

### babel-node.ts関連（C-59〜C-80）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-59 | getV8Flags処理 | E-04: L14-47 getV8Flags関数 | ○ |
| C-60 | フラグ正規化（アンダースコア） | E-04: L26 replace(/_/g, "-") | ○ |
| C-61 | noプレフィックス処理 | E-04: L23 /--(?:no)?(.+)/ | ○ |
| C-62 | 値付きフラグ処理 | E-04: L20-29 正規表現処理 | ○ |
| C-63 | v8flagsエラー処理 | E-04: L34-36 reject(err) | ○ |
| C-64 | フラグ判定（Set） | E-04: L39-43 flagsSet.has | ○ |
| C-65 | Node.jsフラグ判定 | E-04: L43 allowedNodeEnvironmentFlags | ○ |
| C-66 | 引数分類処理 | E-04: L77-84 for文による分類 | ○ |
| C-67 | 等号付きフラグ分類 | E-04: L79 arg.split("=")[0] | ○ |
| C-68 | 曖昧引数警告 | E-04: L109-123 console.warn | ○ |
| C-69 | セパレーター時の動作 | E-04: L86 if (!explicitSeparator) | ○ |
| C-70 | kexec使用 | E-04: L143-144 import("kexec") | △ |
| C-71 | child_process.spawnフォールバック | E-04: L156-160 spawn処理 | ○ |
| C-72 | IPC有効化 | E-04: L155-158 shouldPassthroughIPC | ○ |
| C-73 | IPC無効化 | E-04: L159 stdio: "inherit" | ○ |
| C-74 | 終了コード伝播 | E-04: L166 process.exitCode = code | ○ |
| C-75 | シグナル伝播 | E-04: L164 process.kill | ○ |
| C-76 | IPCメッセージ転送 | E-04: L171 process.send(message) | ○ |
| C-77 | SIGINT転送 | E-04: L173 proc.kill("SIGINT") | ○ |
| C-78 | SIGTERM転送 | E-04: L174 proc.kill("SIGTERM") | ○ |
| C-79 | エラー処理（再スロー） | E-04: L147-152 条件付きthrow | △ |
| C-80 | グローバルエラー処理 | E-04: L135-138 .catch処理 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-70 (kexec使用)**: kexecは外部モジュールであり、インストール状態によって動作が変わる。実際のkexec動作は実機テストで確認が必要。
  - 候補：kexecモジュールのドキュメント / インテグレーションテスト / 手動テスト
- **C-79 (エラー処理)**: エラーコードの種類（ERR_MODULE_NOT_FOUND, MODULE_NOT_FOUND, UNDECLARED_DEPENDENCY）が全ての環境で同様に動作するか確認が必要。
  - 候補：Node.jsバージョン別動作確認 / pnpmなどのパッケージマネージャー依存

## 5) リスクフラグ（レビュー観点）
- **1 (中リスク)**: 外部依存（kexec）の動作確認が不十分
- **0 (低リスク)**: その他のテストケースはソースコードから直接導出可能

## 6) レビュアーチェックリスト（最小）
- [ ] splitArgs関数の境界値テスト（空配列、単一引数、多数引数）の網羅性確認
- [ ] replPlugin内のESM禁止ロジックが全てのimport/export構文をカバーしているか確認
- [ ] kexec不使用時のchild_process.spawn動作がプロダクション環境で期待通りか確認
- [ ] IPC転送処理が複雑なメッセージ（循環参照を含むオブジェクト等）で正しく動作するか確認
- [ ] process.exitCodeの設定タイミングとexit イベントハンドラの順序が正しいか確認
- [ ] V8フラグの正規化処理が全てのフラグ形式（短縮形、長形式、値付き）で正しく動作するか確認
