---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 144
  claims_with_evidence: 140
  claims_without_evidence: 4
confidence_derived: 0.97
---

# 根拠レポート：container モジュール 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：140 / 144、根拠なし：4
- 優先レビュー（高）
  1. **C-019 (UT-CON-019)**：ContainerPlugin constructorのバリデーションエラー条件。スキーマファイルの詳細な検証条件が未確認
  2. **C-027 (UT-CON-027)**：ContainerReferencePlugin constructorのバリデーションエラー条件。スキーマファイルの詳細な検証条件が未確認
  3. **C-034 (UT-CON-034)**：ModuleFederationPlugin constructorのバリデーションエラー条件。スキーマファイルの詳細な検証条件が未確認
  4. **C-045 (UT-CON-045)**：remoteType決定ロジックにおけるisValidExternalsType関数の挙動が外部依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `lib/container/options.js` - parseOptions, scope, process関数の実装
- E-02: `lib/container/ContainerPlugin.js` - ContainerPluginクラスの実装
- E-03: `lib/container/ContainerReferencePlugin.js` - ContainerReferencePluginクラスの実装
- E-04: `lib/container/ModuleFederationPlugin.js` - ModuleFederationPluginクラスの実装
- E-05: `lib/container/ContainerEntryDependency.js` - ContainerEntryDependencyクラスの実装
- E-06: `lib/container/ContainerExposedDependency.js` - ContainerExposedDependencyクラスの実装
- E-07: `lib/container/ContainerEntryModule.js` - ContainerEntryModuleクラスの実装
- E-08: `lib/container/ContainerEntryModuleFactory.js` - ContainerEntryModuleFactoryクラスの実装
- E-09: `lib/container/RemoteModule.js` - RemoteModuleクラスの実装
- E-10: `lib/container/RemoteRuntimeModule.js` - RemoteRuntimeModuleクラスの実装
- E-11: `lib/container/RemoteToExternalDependency.js` - RemoteToExternalDependencyクラスの実装
- E-12: `lib/container/FallbackDependency.js` - FallbackDependencyクラスの実装
- E-13: `lib/container/FallbackItemDependency.js` - FallbackItemDependencyクラスの実装
- E-14: `lib/container/FallbackModule.js` - FallbackModuleクラスの実装
- E-15: `lib/container/FallbackModuleFactory.js` - FallbackModuleFactoryクラスの実装
- E-16: `lib/container/HoistContainerReferencesPlugin.js` - HoistContainerReferencesクラスとgetAllReferencedModules関数の実装

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | parseOptions: 配列形式の文字列オプションが正しくパースされる | E-01 (L27-80: process関数のarray処理、parseOptions関数) | ○ |
| C-002 | parseOptions: オブジェクト形式のオプションが正しくパースされる | E-01 (L45-53: object関数) | ○ |
| C-003 | parseOptions: 配列内オブジェクト混合パース | E-01 (L31-41: array関数でobjectを呼び出し) | ○ |
| C-004 | parseOptions: 値が配列の場合にnormalizeSimpleが適用 | E-01 (L47: typeof value === "string" || Array.isArray(value)) | ○ |
| C-005 | parseOptions: 値がオブジェクト(T型)の場合にnormalizeOptionsが適用 | E-01 (L50: normalizeOptions(value, key)) | ○ |
| C-006 | parseOptions: null/undefinedで空配列返却 | E-01 (L54-55: !optionsのガード) | ○ |
| C-007 | parseOptions: 空配列で空配列返却 | E-01 (L56-57: Array.isArray分岐) | ○ |
| C-008 | parseOptions: 空オブジェクトで空配列返却 | E-01 (L58-59: typeof options === "object"分岐) | ○ |
| C-009 | parseOptions: 不正な型でエラースロー | E-01 (L37-39: throw new Error("Unexpected options format")) | ○ |
| C-010 | parseOptions: トップレベル不正型でエラースロー | E-01 (L60-62: throw new Error("Unexpected options format")) | ○ |
| C-011 | scope: ./キーにスコープ付与 | E-01 (L97: key.startsWith("./")のtrue分岐) | ○ |
| C-012 | scope: ./なしキーにスコープ付与 | E-01 (L97: key.startsWith("./")のfalse分岐) | ○ |
| C-013 | scope: 空オプションで空オブジェクト | E-01 (L88-102) | ○ |
| C-014 | ContainerPlugin constructor: 有効オプションで初期化 | E-02 (L38-63) | ○ |
| C-015 | ContainerPlugin constructor: shareScope上書き | E-02 (L48: options.shareScope || "default") | ○ |
| C-016 | ContainerPlugin constructor: library上書き | E-02 (L44-47: options.library || {...}) | ○ |
| C-017 | ContainerPlugin constructor: exposes文字列→配列変換 | E-02 (L53-54: Array.isArray(item) ? item : [item]) | ○ |
| C-018 | ContainerPlugin constructor: exposes配列保持 | E-02 (L53-54: Array.isArray(item) ? item : [item]) | ○ |
| C-019 | ContainerPlugin constructor: 無効オプションでバリデーションエラー | E-02 (L39: validate(options)) | △ |
| C-020 | ContainerPlugin apply: hooks登録 | E-02 (L71-114) | ○ |
| C-021 | ContainerPlugin apply: enabledLibraryTypes追加 | E-02 (L75-77) | ○ |
| C-022 | ContainerPlugin apply: enabledLibraryTypes重複防止 | E-02 (L75: includes チェック) | ○ |
| C-023 | ContainerReferencePlugin constructor: 有効オプションで初期化 | E-03 (L39-55) | ○ |
| C-024 | ContainerReferencePlugin constructor: remotes文字列→配列変換 | E-03 (L46: Array.isArray(item) ? item : [item]) | ○ |
| C-025 | ContainerReferencePlugin constructor: remotes配列保持 | E-03 (L50-51) | ○ |
| C-026 | ContainerReferencePlugin constructor: デフォルトshareScope | E-03 (L47, L53: options.shareScope || "default") | ○ |
| C-027 | ContainerReferencePlugin constructor: 無効オプションでバリデーションエラー | E-03 (L40: validate(options)) | △ |
| C-028 | ContainerReferencePlugin apply: ExternalsPlugin適用 | E-03 (L79: new ExternalsPlugin) | ○ |
| C-029 | ContainerReferencePlugin apply: internal除外 | E-03 (L71: external.startsWith("internal ")) | ○ |
| C-030 | ContainerReferencePlugin apply: RemoteModule返却 | E-03 (L107-118: new RemoteModule) | ○ |
| C-031 | ContainerReferencePlugin apply: 完全一致リクエスト | E-03 (L104: data.request.length === key.length) | ○ |
| C-032 | ContainerReferencePlugin apply: ローダーリクエスト除外 | E-03 (L100: !data.request.includes("!")) | ○ |
| C-033 | ModuleFederationPlugin constructor: 有効オプションで初期化 | E-04 (L45-48) | ○ |
| C-034 | ModuleFederationPlugin constructor: 無効オプションでバリデーションエラー | E-04 (L46: validate(options)) | △ |
| C-035 | ModuleFederationPlugin getCompilationHooks: フックオブジェクト返却 | E-04 (L56-71) | ○ |
| C-036 | ModuleFederationPlugin getCompilationHooks: 同一Compilationでキャッシュ | E-04 (L62: compilationHooksMap.get) | ○ |
| C-037 | ModuleFederationPlugin getCompilationHooks: TypeError | E-04 (L57-60: instanceof Compilation チェック) | ○ |
| C-038 | ModuleFederationPlugin apply: ContainerPlugin適用 | E-04 (L93-107: exposesチェック → new ContainerPlugin) | ○ |
| C-039 | ModuleFederationPlugin apply: ContainerReferencePlugin適用 | E-04 (L108-119: remotesチェック → new ContainerReferencePlugin) | ○ |
| C-040 | ModuleFederationPlugin apply: SharePlugin適用 | E-04 (L120-123: options.shared → new SharePlugin) | ○ |
| C-041 | ModuleFederationPlugin apply: HoistContainerReferences常時適用 | E-04 (L126: new HoistContainerReferences().apply) | ○ |
| C-042 | ModuleFederationPlugin apply: 空exposesでContainerPlugin不適用 | E-04 (L95-96: Array.isArray + length > 0チェック) | ○ |
| C-043 | ModuleFederationPlugin apply: 空remotesでContainerReferencePlugin不適用 | E-04 (L110-111: 同様のチェック) | ○ |
| C-044 | ModuleFederationPlugin apply: デフォルトlibrary生成 | E-04 (L80: options.library || {...}) | ○ |
| C-045 | ModuleFederationPlugin apply: デフォルトremoteType | E-04 (L81-85: isValidExternalsType使用) | △ |
| C-046 | ContainerEntryDependency constructor: プロパティ設定 | E-05 (L19-27) | ○ |
| C-047 | ContainerEntryDependency getResourceIdentifier | E-05 (L32-34) | ○ |
| C-048 | ContainerEntryDependency type getter | E-05 (L36-38) | ○ |
| C-049 | ContainerEntryDependency category getter | E-05 (L40-42) | ○ |
| C-050 | ContainerExposedDependency constructor: プロパティ設定 | E-06 (L19-23) | ○ |
| C-051 | ContainerExposedDependency type getter | E-06 (L25-27) | ○ |
| C-052 | ContainerExposedDependency category getter | E-06 (L29-31) | ○ |
| C-053 | ContainerExposedDependency getResourceIdentifier | E-06 (L36-38) | ○ |
| C-054 | ContainerExposedDependency serialize | E-06 (L43-46) | ○ |
| C-055 | ContainerExposedDependency deserialize | E-06 (L51-54) | ○ |
| C-056 | ContainerEntryModule constructor | E-07 (L53-61) | ○ |
| C-057 | ContainerEntryModule getSourceTypes | E-07 (L66-68) | ○ |
| C-058 | ContainerEntryModule identifier | E-07 (L73-77) | ○ |
| C-059 | ContainerEntryModule readableIdentifier | E-07 (L83-85) | ○ |
| C-060 | ContainerEntryModule libIdent | E-07 (L91-95) | ○ |
| C-061 | ContainerEntryModule libIdent with layer | E-07 (L92: this.layer条件分岐) | ○ |
| C-062 | ContainerEntryModule needBuild (未ビルド) | E-07 (L102-103: !this.buildMeta) | ○ |
| C-063 | ContainerEntryModule needBuild (ビルド済み) | E-07 (L102-103) | ○ |
| C-064 | ContainerEntryModule build: メタデータ設定 | E-07 (L114-119) | ○ |
| C-065 | ContainerEntryModule build: AsyncDependenciesBlock生成 | E-07 (L124-143) | ○ |
| C-066 | ContainerEntryModule build: StaticExportsDependency追加 | E-07 (L144) | ○ |
| C-067 | ContainerEntryModule codeGeneration: コード生成 | E-07 (L153-265) | ○ |
| C-068 | ContainerEntryModule codeGeneration: runtimeRequirements | E-07 (L156-160) | ○ |
| C-069 | ContainerEntryModule size | E-07 (L271-273: return 42) | ○ |
| C-070 | ContainerEntryModule serialize | E-07 (L278-284) | ○ |
| C-071 | ContainerEntryModule deserialize | E-07 (L290-295) | ○ |
| C-072 | ContainerEntryModuleFactory create | E-08 (L21-26) | ○ |
| C-073 | RemoteModule constructor | E-09 (L53-67) | ○ |
| C-074 | RemoteModule identifier | E-09 (L72-74) | ○ |
| C-075 | RemoteModule readableIdentifier | E-09 (L80-82) | ○ |
| C-076 | RemoteModule libIdent | E-09 (L88-92) | ○ |
| C-077 | RemoteModule libIdent with layer | E-09 (L89: this.layer条件分岐) | ○ |
| C-078 | RemoteModule needBuild (未ビルド) | E-09 (L99-101: !this.buildInfo) | ○ |
| C-079 | RemoteModule needBuild (ビルド済み) | E-09 (L99-101) | ○ |
| C-080 | RemoteModule build: 単一externalRequest | E-09 (L118-121: externalRequests.length === 1) | ○ |
| C-081 | RemoteModule build: 複数externalRequests | E-09 (L122-124: FallbackDependency) | ○ |
| C-082 | RemoteModule build: メタデータ設定 | E-09 (L112-116) | ○ |
| C-083 | RemoteModule size | E-09 (L133-135: return 6) | ○ |
| C-084 | RemoteModule getSourceTypes | E-09 (L140-142) | ○ |
| C-085 | RemoteModule getSourceBasicTypes | E-09 (L153-155) | ○ |
| C-086 | RemoteModule getExportsType | E-09 (L166-168: return "dynamic") | ○ |
| C-087 | RemoteModule nameForCondition | E-09 (L173-175) | ○ |
| C-088 | RemoteModule codeGeneration | E-09 (L181-197) | ○ |
| C-089 | RemoteModule codeGeneration: id未定義時 | E-09 (L193: id === undefined ? "" : ...) | ○ |
| C-090 | RemoteModule serialize | E-09 (L202-208) | ○ |
| C-091 | RemoteModule deserialize | E-09 (L215-220) | ○ |
| C-092 | RemoteRuntimeModule constructor | E-10 (L20-22: super("remotes loading")) | ○ |
| C-093 | RemoteRuntimeModule generate: リモートあり | E-10 (L27-141) | ○ |
| C-094 | RemoteRuntimeModule generate: リモートなし | E-10 (L41-42: modules nullチェック) | ○ |
| C-095 | RemoteRuntimeModule generate: ハンドラコード | E-10 (L73-139) | ○ |
| C-096 | RemoteToExternalDependency constructor | E-11 (L14-17) | ○ |
| C-097 | RemoteToExternalDependency type getter | E-11 (L19-21) | ○ |
| C-098 | RemoteToExternalDependency category getter | E-11 (L23-25) | ○ |
| C-099 | FallbackDependency constructor | E-12 (L19-23) | ○ |
| C-100 | FallbackDependency getResourceIdentifier | E-12 (L28-30) | ○ |
| C-101 | FallbackDependency type getter | E-12 (L32-34) | ○ |
| C-102 | FallbackDependency category getter | E-12 (L36-38) | ○ |
| C-103 | FallbackDependency serialize | E-12 (L43-47) | ○ |
| C-104 | FallbackDependency deserialize | E-12 (L53-58) | ○ |
| C-105 | FallbackItemDependency constructor | E-13 (L15-18) | ○ |
| C-106 | FallbackItemDependency type getter | E-13 (L20-22) | ○ |
| C-107 | FallbackItemDependency category getter | E-13 (L24-26) | ○ |
| C-108 | FallbackModule constructor | E-14 (L46-52) | ○ |
| C-109 | FallbackModule identifier | E-14 (L57-59) | ○ |
| C-110 | FallbackModule readableIdentifier | E-14 (L65-67) | ○ |
| C-111 | FallbackModule libIdent | E-14 (L73-77) | ○ |
| C-112 | FallbackModule libIdent with layer | E-14 (L74: this.layer条件分岐) | ○ |
| C-113 | FallbackModule chunkCondition (エントリあり) | E-14 (L84-86) | ○ |
| C-114 | FallbackModule chunkCondition (エントリなし) | E-14 (L84-86) | ○ |
| C-115 | FallbackModule needBuild (未ビルド) | E-14 (L93-95) | ○ |
| C-116 | FallbackModule needBuild (ビルド済み) | E-14 (L93-95) | ○ |
| C-117 | FallbackModule build: FallbackItemDependency追加 | E-14 (L105-117) | ○ |
| C-118 | FallbackModule build: メタデータ設定 | E-14 (L106-109) | ○ |
| C-119 | FallbackModule size: 2件 | E-14 (L123-125: this.requests.length * 5 + 42) | ○ |
| C-120 | FallbackModule size: 1件 | E-14 (L123-125) | ○ |
| C-121 | FallbackModule getSourceTypes | E-14 (L130-132) | ○ |
| C-122 | FallbackModule codeGeneration | E-14 (L138-168) | ○ |
| C-123 | FallbackModule codeGeneration: runtimeRequirements | E-14 (L40, L167) | ○ |
| C-124 | FallbackModule serialize | E-14 (L173-177) | ○ |
| C-125 | FallbackModule deserialize | E-14 (L183-188) | ○ |
| C-126 | FallbackModuleFactory create | E-15 (L21-26) | ○ |
| C-127 | HoistContainerReferences apply | E-16 (L33-69) | ○ |
| C-128 | HoistContainerReferences apply: ステージ設定 | E-16 (L56-59: STAGE_ADVANCED + 1) | ○ |
| C-129 | HoistContainerReferences hoistModulesInChunks: 外部モジュールホイスト | E-16 (L82-116) | ○ |
| C-130 | HoistContainerReferences hoistModulesInChunks: コンテナエントリホイスト | E-16 (L119-164) | ○ |
| C-131 | HoistContainerReferences hoistModulesInChunks: モジュール未解決スキップ | E-16 (L84, L121: if (!...Module) continue) | ○ |
| C-132 | HoistContainerReferences hoistModulesInChunks: 重複接続防止 | E-16 (L110: isModuleInChunkチェック) | ○ |
| C-133 | HoistContainerReferences cleanUpChunks: モジュール切断 | E-16 (L172-192) | ○ |
| C-134 | HoistContainerReferences cleanUpChunks: 空チャンク削除 | E-16 (L178-186) | ○ |
| C-135 | HoistContainerReferences cleanUpChunks: 名前付きチャンク削除 | E-16 (L184-186) | ○ |
| C-136 | HoistContainerReferences cleanUpChunks: runtimeチャンク保護 | E-16 (L176: chunk.hasRuntime()チェック) | ○ |
| C-137 | HoistContainerReferences cleanUpChunks: セットクリア | E-16 (L191: modules.clear()) | ○ |
| C-138 | getAllReferencedModules: type="initial"でAsync除外 | E-16 (L226-234: AsyncDependenciesBlock instanceof) | ○ |
| C-139 | getAllReferencedModules: type="external"でExternalModuleのみ | E-16 (L237-244: ExternalModule instanceof) | ○ |
| C-140 | getAllReferencedModules: includeInitial=true | E-16 (L204: includeInitial ? [module] : []) | ○ |
| C-141 | getAllReferencedModules: includeInitial=false | E-16 (L204) | ○ |
| C-142 | getAllReferencedModules: 循環参照の処理 | E-16 (L206, L221: visitedModules WeakSetによるガード) | ○ |
| C-143 | getAllReferencedModules: outgoingConnectionsが空 | E-16 (L216: if (outgoingConnections)) | ○ |
| C-144 | getAllReferencedModules: connectedModuleがnull | E-16 (L221: !connectedModule チェック) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-019, C-027, C-034**: バリデーションスキーマファイル（`schemas/plugins/container/*.json`）の詳細内容が未参照のため、具体的にどのフィールドが必須かの詳細は確認できていない
  - 候補：`schemas/plugins/container/ContainerPlugin.json` / `ContainerReferencePlugin.json` / `ModuleFederationPlugin.json`
- **C-045**: `isValidExternalsType`関数の内部実装（`schemas/plugins/container/ExternalsType.check.js`）が未確認のため、remoteTypeのデフォルト決定ロジックの詳細が不完全
  - 候補：`schemas/plugins/container/ExternalsType.check.js`

## 5) リスクフラグ（レビュー観点）
- 0: options.js の parseOptions/scope 関数テスト（ロジックが明確で根拠十分）
- 0: 各Dependencyクラスの getter/constructor テスト（単純なプロパティ設定・返却）
- 0: 各Moduleクラスの identifier/readableIdentifier/size テスト（固定値返却）
- 1: バリデーションエラーのテストケース（スキーマファイル未確認）
- 1: ModuleFederationPlugin apply のプラグイン適用ロジック（外部プラグインとの連携）
- 1: RemoteRuntimeModule generate のランタイムコード生成（複雑なTemplate処理）
- 1: HoistContainerReferences のチャンク最適化ロジック（compilation/chunkGraph依存が大きい）
- 0: serialize/deserialize テスト（パターンが統一的で根拠明確）

## 6) レビュアーチェックリスト（最小）
- [ ] バリデーションスキーマファイルを参照し、C-019/C-027/C-034の具体的なエラー条件を確認する
- [ ] isValidExternalsType の挙動を確認し、C-045のデフォルトremoteType決定ロジックを検証する
- [ ] RemoteRuntimeModule.generate のランタイムコード生成が、webpackのランタイムテンプレートAPIと整合するか確認する
- [ ] HoistContainerReferences の hoistModulesInChunks/cleanUpChunks が、実際のcompilationオブジェクト構造と整合するか確認する
- [ ] ContainerEntryModule.codeGeneration の生成コードが、Module Federationの仕様（get/init関数の公開）と整合するか確認する
