---
generated_at: 2026-03-01 06:05:00
metrics:
  claims_total: 40
  claims_with_evidence: 38
  claims_without_evidence: 2
confidence_derived: 0.95
---

# 根拠レポート：babel-plugin-proposal-import-defer 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：38 / 40、根拠なし：2
- 優先レビュー（高）
  1. **C-34**: 空プログラムのエッジケース - 実際のテストフィクスチャでは検証されていない
  2. **C-08**: バインディング未定義のエッジケース - 実際のテストフィクスチャでは検証されていない

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

- E-01: `packages/babel-plugin-proposal-import-defer/src/index.ts` - メインソースコード
- E-02: `packages/babel-plugin-proposal-import-defer/package.json` - パッケージ定義
- E-03: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/reference-property-only/input.mjs` - テスト入力（property-only参照）
- E-04: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/reference-property-only/output.js` - テスト出力（property-only参照）
- E-05: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/reference-plain-only/input.mjs` - テスト入力（plain参照）
- E-06: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/reference-plain-only/output.js` - テスト出力（plain参照）
- E-07: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/not-referenced/input.mjs` - テスト入力（未参照）
- E-08: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/not-referenced/output.js` - テスト出力（未参照）
- E-09: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/with-full-import-before/input.mjs` - テスト入力（eagerインポート先行）
- E-10: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/with-full-import-before/output.js` - テスト出力（eagerインポート先行）
- E-11: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/with-full-import-after/input.mjs` - テスト入力（eagerインポート後続）
- E-12: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/with-full-import-after/output.js` - テスト出力（eagerインポート後続）
- E-13: `packages/babel-plugin-proposal-import-defer/test/fixtures/exec/reference-property-only/exec.js` - 実行テスト（property-only）
- E-14: `packages/babel-plugin-proposal-import-defer/test/fixtures/exec/reference-plain-only/exec.js` - 実行テスト（plain参照）
- E-15: `packages/babel-plugin-proposal-import-defer/test/fixtures/exec/not-referenced/exec.js` - 実行テスト（未参照）
- E-16: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/reference-property-and-plain/input.mjs` - テスト入力（混合参照）
- E-17: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/reference-property-and-plain/output.js` - テスト出力（混合参照）
- E-18: `packages/babel-plugin-proposal-import-defer/test/fixtures/transform/options.json` - テストオプション設定

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | プラグインが正しく定義されること | E-01 (declare, name: 'proposal-import-defer') | ○ |
| C-02 | api.assertVersionが正しいバージョン要件で呼び出されること | E-01 (line 6: api.assertVersion) | ○ |
| C-03 | サポート外のBabelバージョンでエラーがスローされること | E-01 (assertVersionの動作) | ○ |
| C-04 | 全参照がプロパティアクセスの場合にtrueが返ること | E-01 (allReferencesAreProps), E-03, E-04 | ○ |
| C-05 | プレーン参照が含まれる場合にfalseが返ること | E-01 (allReferencesAreProps), E-05, E-06 | ○ |
| C-06 | プロパティアクセスとプレーン参照が混在する場合にfalseが返ること | E-01, E-16, E-17 | ○ |
| C-07 | 参照が存在しない場合の挙動 | E-01 (every on empty array returns true), E-07, E-08 | ○ |
| C-08 | バインディングが存在しない場合の挙動 | E-01 (line 17-20) | △ |
| C-09 | deferredImportEvaluationプラグインが追加されること | E-01 (line 26: manipulateOptions) | ○ |
| C-10 | CommonJSフックが正しく定義されること | E-01 (lines 28-67: pre, defineCommonJSHook) | ○ |
| C-11 | 全参照がプロパティアクセスの場合に'defer/function'が返ること | E-01 (line 41), E-03, E-04 | ○ |
| C-12 | プレーン参照が含まれる場合に'defer/proxy'が返ること | E-01 (line 39-41), E-05, E-06 | ○ |
| C-13 | 非ImportDeclarationノードでnullが返ること | E-01 (line 37) | ○ |
| C-14 | phase !== 'defer'の場合にnullが返ること | E-01 (line 38) | ○ |
| C-15 | defer/proxyペイロードで参照がある場合にProxy文が返ること | E-01 (lines 44-50), E-06 | ○ |
| C-16 | defer/proxyペイロードで参照がない場合にfalseが返ること | E-01 (line 45) | ○ |
| C-17 | defer/functionペイロードで参照がある場合に関数文が返ること | E-01 (lines 52-59), E-04 | ○ |
| C-18 | defer/functionペイロードで参照がない場合にfalseが返ること | E-01 (line 53) | ○ |
| C-19 | 未知のペイロードでnullが返ること | E-01 (line 61) | ○ |
| C-20 | defer/functionペイロードでCallExpressionが返ること | E-01 (line 64) | ○ |
| C-21 | defer/proxyペイロードでnullが返ること | E-01 (lines 63-65: wrapReference) | ○ |
| C-22 | 未知のペイロードでnullが返ること | E-01 (line 65) | ○ |
| C-23 | CommonJS以外のモジュール形式でエラーがスローされること | E-01 (lines 72-77), E-18 | ○ |
| C-24 | CommonJSモードでエラーがスローされないこと | E-01 (line 72), E-18 | ○ |
| C-25 | 通常インポートがeagerImportsセットに追加されること | E-01 (lines 85-98), E-09, E-11 | ○ |
| C-26 | ExportNamedDeclarationのsourceがeagerImportsに追加されること | E-01 (line 90) | ○ |
| C-27 | ExportAllDeclarationがeagerImportsに追加されること | E-01 (line 91) | ○ |
| C-28 | 同一モジュールのdeferインポートが末尾に移動されること | E-01 (lines 100-115), E-09, E-10, E-11, E-12 | ○ |
| C-29 | deferインポートのphaseがnullに設定されること | E-01 (line 106) | ○ |
| C-30 | 移動後にscope.crawl()が呼び出されること | E-01 (line 114) | ○ |
| C-31 | 移動対象のインポートがない場合にpushContainerが呼ばれないこと | E-01 (line 111: if条件) | ○ |
| C-32 | 元の位置からインポートが削除されること | E-01 (line 108: child.remove()) | ○ |
| C-33 | eagerインポートがない場合にdeferインポートがそのままであること | E-01 (line 104: continue), E-03, E-04 | ○ |
| C-34 | body配列が空の場合のハンドリング | E-01 (for-of loops) | △ |
| C-35 | 複数のeagerインポートとdeferインポートの組み合わせ | E-01, E-09, E-10 | ○ |
| C-36 | property-only参照のdeferインポートが関数ラッパーに変換されること | E-03, E-04 | ○ |
| C-37 | plain参照のdeferインポートがプロキシラッパーに変換されること | E-05, E-06 | ○ |
| C-38 | 参照のないdeferインポートが削除されること | E-07, E-08 | ○ |
| C-39 | deferインポートが実際にアクセスまで評価が遅延されること | E-13, E-14 | ○ |
| C-40 | プロパティアクセス時にモジュールが評価されること | E-13, E-14, E-15 | ○ |

## 4) 不足情報（Unknown / Missing）
- C-08: バインディングが存在しない場合のテストケース
  - 候補：`getOwnBinding`がundefinedを返すケース / スコープ外参照 / シンボル衝突
- C-34: 空のProgram bodyのテストケース
  - 候補：空のESMファイル / コメントのみのファイル / 最小限の構文

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - プラグイン定義とバージョンチェック（C-01, C-02, C-03）
- 0: 低リスク - manipulateOptions（C-09）
- 1: 中リスク - CommonJSフック定義（C-10〜C-22）- ペイロード分岐の網羅性を確認推奨
- 1: 中リスク - Programビジター（C-23〜C-35）- インポート順序制御のエッジケース確認推奨
- 0: 低リスク - 統合テスト（C-36〜C-40）- 既存フィクスチャで検証済み

## 6) レビュアーチェックリスト（最小）
- [ ] allReferencesArePropsの判定ロジックがテストケースで網羅されているか確認
- [ ] getWrapperPayloadの各分岐（defer/proxy, defer/function, null）が網羅されているか確認
- [ ] buildRequireWrapperの各ペイロードタイプに対するテストがあるか確認
- [ ] wrapReferenceの各ペイロードタイプに対するテストがあるか確認
- [ ] Programビジターでのインポート順序制御が正しくテストされているか確認
- [ ] CommonJS以外のモジュール形式でのエラーハンドリングが検証されているか確認
- [ ] 実行時の遅延評価動作が検証されているか確認
- [ ] エッジケース（C-08, C-34）に対する追加テストが必要か検討
