---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 151
  claims_with_evidence: 147
  claims_without_evidence: 4
confidence_derived: 0.97
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：147 / 151、根拠なし：4
- 優先レビュー（高）
  1. **C-032（generateModuleRemapping正常系）**：exportsInfoのモック構造が複雑で、実際の動作との整合性を確認する必要がある
  2. **C-033（generateModuleRemapping未使用パス）**：UsageState.Unusedの条件判定が正確かの確認が必要
  3. **C-134（resolveLayerキャッシュ）**：WeakMapのキャッシュ挙動の検証方法が不明確
  4. **C-131（byLayerレイヤー解決）**：resolveByPropertyの内部動作に依存しており根拠が間接的

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

- E-01: `lib/ExternalModule.js` - ExternalModuleクラス定義（L632-1166）
- E-02: `lib/ExternalModule.js` - ModuleExternalInitFragmentクラス定義（L257-393）
- E-03: `lib/ExternalModule.js` - getSourceForGlobalVariableExternal関数（L104-118）
- E-04: `lib/ExternalModule.js` - getSourceForCommonJsExternal関数（L126-139）
- E-05: `lib/ExternalModule.js` - getSourceForCommonJsExternalInNodeModule関数（L163-185）
- E-06: `lib/ExternalModule.js` - getSourceForImportExternal関数（L193-239）
- E-07: `lib/ExternalModule.js` - importAssertionReplacer関数（L246-252）
- E-08: `lib/ExternalModule.js` - getSourceForModuleExternal関数（L447-529）
- E-09: `lib/ExternalModule.js` - generateModuleRemapping関数（L403-436）
- E-10: `lib/ExternalModule.js` - getSourceForScriptExternal関数（L536-566）
- E-11: `lib/ExternalModule.js` - checkExternalVariable関数（L574-577）
- E-12: `lib/ExternalModule.js` - getSourceForAmdOrUmdExternal関数（L586-605）
- E-13: `lib/ExternalModule.js` - getSourceForDefaultCase関数（L613-627）
- E-14: `lib/ExternalModule.js` - getExternalModuleNodeCommonjsInitFragment関数（L145-156）
- E-15: `lib/ExternalModuleFactoryPlugin.js` - ExternalModuleFactoryPluginクラス定義（L100-368）
- E-16: `lib/ExternalModuleFactoryPlugin.js` - handleExternal内部関数（L132-215）
- E-17: `lib/ExternalModuleFactoryPlugin.js` - handleExternals内部関数（L222-362）
- E-18: `lib/ExternalModuleFactoryPlugin.js` - resolveLayer関数（L82-94）
- E-19: `lib/ExternalModuleFactoryPlugin.js` - UNSPECIFIED_EXTERNAL_TYPE_REGEXP定数（L47）
- E-20: `lib/ExternalModuleFactoryPlugin.js` - callDeprecatedExternals関数（L51-64）
- E-21: `lib/ExternalsPlugin.js` - ExternalsPluginクラス定義（L20-93）
- E-22: `lib/ExternalsPlugin.js` - applyメソッド内compileフック（L35-40）
- E-23: `lib/ExternalsPlugin.js` - applyメソッド内compilationフック（L42-89）
- E-24: `lib/ExternalModule.js` - RUNTIME_REQUIREMENTS定数群（L88-97）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | getSourceForGlobalVariableExternal: 文字列variableNameでthis型のSourceData生成 | E-03 | ○ |
| C-002 | getSourceForGlobalVariableExternal: 配列variableNameでネストパスアクセス生成 | E-03 | ○ |
| C-003 | getSourceForGlobalVariableExternal: type='this'でiife=true | E-03 (L115) | ○ |
| C-004 | getSourceForGlobalVariableExternal: type!='this'でiife=false | E-03 (L115) | ○ |
| C-005 | getSourceForGlobalVariableExternal: 空配列の境界値 | E-03 | ○ |
| C-006 | getSourceForGlobalVariableExternal: 1要素配列の境界値 | E-03 | ○ |
| C-007 | getSourceForCommonJsExternal: 文字列でrequire文生成 | E-04 (L127-131) | ○ |
| C-008 | getSourceForCommonJsExternal: 配列でプロパティアクセス付きrequire文 | E-04 (L132-138) | ○ |
| C-009 | getSourceForCommonJsExternal: 1要素配列の境界値 | E-04 | ○ |
| C-010 | getSourceForCommonJsExternalInNodeModule: 文字列でcreateRequire経由 | E-05 (L170-176) | ○ |
| C-011 | getSourceForCommonJsExternalInNodeModule: 配列でプロパティアクセス付き | E-05 (L178-184) | ○ |
| C-012 | getSourceForImportExternal: 文字列でimport()生成 | E-06 (L216-221) | ○ |
| C-013 | getSourceForImportExternal: 1要素配列でimport()生成 | E-06 (L223-228) | ○ |
| C-014 | getSourceForImportExternal: 複数要素配列で.then付きimport() | E-06 (L230-238) | ○ |
| C-015 | getSourceForImportExternal: attributes存在でwith句付与 | E-06 (L207-215) | ○ |
| C-016 | getSourceForImportExternal: _isLegacyAssertでassert句 | E-06 (L209-211), E-07 | ○ |
| C-017 | getSourceForImportExternal: 動的import非サポートでエラー | E-06 (L199-206) | ○ |
| C-018 | importAssertionReplacer: _isLegacyAssertキーでundefined | E-07 (L247-248) | ○ |
| C-019 | importAssertionReplacer: 通常キーで値返却 | E-07 (L251) | ○ |
| C-020 | getSourceForScriptExternal: PromiseベースScript式生成 | E-10 | ○ |
| C-021 | getSourceForScriptExternal: 文字列指定でextractUrlAndGlobal分解 | E-10 (L537-539) | ○ |
| C-022 | checkExternalVariable: 未定義チェックコード生成 | E-11 | ○ |
| C-023 | getSourceForAmdOrUmdExternal: optional=falseでinit=undefined | E-12 (L596-604) | ○ |
| C-024 | getSourceForAmdOrUmdExternal: optional=trueでチェックコード | E-12 (L596-601) | ○ |
| C-025 | getSourceForAmdOrUmdExternal: 配列requestでjoinされたリクエスト名 | E-12 (L599) | ○ |
| C-026 | getSourceForDefaultCase: optional=false, 文字列request | E-13 (L614-626) | ○ |
| C-027 | getSourceForDefaultCase: 配列requestでプロパティアクセス | E-13 (L620) | ○ |
| C-028 | getSourceForDefaultCase: optional=trueでチェックコード | E-13 (L622-623) | ○ |
| C-029 | getSourceForModuleExternal: ModuleExternalInitFragment生成 | E-08 (L483-489) | ○ |
| C-030 | getSourceForModuleExternal: usedExports=falseで空配列 | E-08 (L466-468) | ○ |
| C-031 | getSourceForModuleExternal: 複数要素でimported=true | E-08 (L479-481) | ○ |
| C-032 | generateModuleRemapping: 未使用otherExportsInfoでリマッピング生成 | E-09 | △ |
| C-033 | generateModuleRemapping: 使用済みotherExportsInfoでundefined | E-09 (L409) | △ |
| C-034 | ModuleExternalInitFragment constructor: ident自動生成 | E-02 (L272-279) | ○ |
| C-035 | ModuleExternalInitFragment constructor: ident明示指定 | E-02 (L265-267) | ○ |
| C-036 | ModuleExternalInitFragment constructor: ハッシュサフィックス付与 | E-02 (L274-278) | ○ |
| C-037 | ModuleExternalInitFragment getContent: import * as形式 | E-02 (L331-335) | ○ |
| C-038 | ModuleExternalInitFragment getContent: 副作用のみimport | E-02 (L336-338) | ○ |
| C-039 | ModuleExternalInitFragment getContent: import { ... } from形式 | E-02 (L339-348) | ○ |
| C-040 | ModuleExternalInitFragment getContent: 同名のas省略 | E-02 (L341-345) | ○ |
| C-041 | ModuleExternalInitFragment getContent: attributes付きwith句 | E-02 (L320-329) | ○ |
| C-042 | ModuleExternalInitFragment getNamespaceIdentifier | E-02 (L352-354) | ○ |
| C-043 | ModuleExternalInitFragment buildIdentifier | E-02 (L360-362) | ○ |
| C-044 | ModuleExternalInitFragment buildImported: true返却 | E-02 (L368-376) | ○ |
| C-045 | ModuleExternalInitFragment buildImported: 配列変換 | E-02 (L369-374) | ○ |
| C-046 | ModuleExternalInitFragment getImported | E-02 (L298-300) | ○ |
| C-047 | ModuleExternalInitFragment setImported | E-02 (L305-307) | ○ |
| C-048 | ExternalModule constructor: プロパティ初期化 | E-01 (L639-651) | ○ |
| C-049 | ExternalModule constructor: dependencyMeta指定 | E-01 (L639-651) | ○ |
| C-050 | ExternalModule getSourceTypes: asset+css-url | E-01 (L656-669) | ○ |
| C-051 | ExternalModule getSourceTypes: css-import | E-01 (L664-666) | ○ |
| C-052 | ExternalModule getSourceTypes: JAVASCRIPT_TYPES | E-01 (L668) | ○ |
| C-053 | ExternalModule libIdent | E-01 (L675-677) | ○ |
| C-054 | ExternalModule chunkCondition: css-import=true | E-01 (L684-688) | ○ |
| C-055 | ExternalModule chunkCondition: エントリあり=true | E-01 (L687) | ○ |
| C-056 | ExternalModule chunkCondition: エントリなし=false | E-01 (L687) | ○ |
| C-057 | ExternalModule identifier | E-01 (L693-695) | ○ |
| C-058 | ExternalModule readableIdentifier | E-01 (L701-703) | ○ |
| C-059 | ExternalModule needBuild: buildMeta未設定=true | E-01 (L710-712) | ○ |
| C-060 | ExternalModule needBuild: buildMeta設定済み=false | E-01 (L710-712) | ○ |
| C-061 | ExternalModule build: commonjsのメタデータ設定 | E-01 (L722-796) | ○ |
| C-062 | ExternalModule build: this型strict=false | E-01 (L737-739) | ○ |
| C-063 | ExternalModule build: system型namespace+canMangle | E-01 (L740-745) | ○ |
| C-064 | ExternalModule build: module型jsModule=true | E-01 (L746-753) | ○ |
| C-065 | ExternalModule build: module型jsModule=false | E-01 (L753-763) | ○ |
| C-066 | ExternalModule build: script型async=true | E-01 (L765-771) | ○ |
| C-067 | ExternalModule build: import型namespace | E-01 (L781-792) | ○ |
| C-068 | ExternalModule build: promise型async=true | E-01 (L773-780) | ○ |
| C-069 | ExternalModule build: StaticExportsDependency追加 | E-01 (L794) | ○ |
| C-070 | ExternalModule build: callback呼び出し | E-01 (L795) | ○ |
| C-071 | ExternalModule getConcatenationBailoutReason: amd | E-01 (L813-819) | ○ |
| C-072 | ExternalModule getConcatenationBailoutReason: umd | E-01 (L815-819) | ○ |
| C-073 | ExternalModule getConcatenationBailoutReason: system | E-01 (L817-819) | ○ |
| C-074 | ExternalModule getConcatenationBailoutReason: jsonp | E-01 (L818-819) | ○ |
| C-075 | ExternalModule getConcatenationBailoutReason: commonjs=undefined | E-01 (L821) | ○ |
| C-076 | ExternalModule getConcatenationBailoutReason: module=undefined | E-01 (L821) | ○ |
| C-077 | ExternalModule _getRequestAndExternalType: 文字列request | E-01 (L828-835) | ○ |
| C-078 | ExternalModule _getRequestAndExternalType: オブジェクトrequest解決 | E-01 (L830-831) | ○ |
| C-079 | ExternalModule _resolveExternalType: module-import+dependencyMeta | E-01 (L844-853) | ○ |
| C-080 | ExternalModule _resolveExternalType: module-importデフォルト | E-01 (L853) | ○ |
| C-081 | ExternalModule _resolveExternalType: asset+sourceType | E-01 (L854-862) | ○ |
| C-082 | ExternalModule _resolveExternalType: assetデフォルト | E-01 (L864) | ○ |
| C-083 | ExternalModule _resolveExternalType: その他パススルー | E-01 (L867) | ○ |
| C-084 | ExternalModule _getSourceData: thisディスパッチ | E-01 (L893-896) | ○ |
| C-085 | ExternalModule _getSourceData: commonjsディスパッチ | E-01 (L902-906) | ○ |
| C-086 | ExternalModule _getSourceData: node-commonjs jsModule=true | E-01 (L907-910) | ○ |
| C-087 | ExternalModule _getSourceData: node-commonjs jsModule=false | E-01 (L907-910) | ○ |
| C-088 | ExternalModule _getSourceData: importディスパッチ | E-01 (L925-930) | ○ |
| C-089 | ExternalModule _getSourceData: scriptディスパッチ | E-01 (L931-932) | ○ |
| C-090 | ExternalModule _getSourceData: module ESMディスパッチ | E-01 (L933-963) | ○ |
| C-091 | ExternalModule _getSourceData: module動的import非サポートエラー | E-01 (L935-943) | ○ |
| C-092 | ExternalModule _getSourceData: ESM構文非サポートエラー | E-01 (L950-953) | ○ |
| C-093 | ExternalModule _getSourceData: varディスパッチ | E-01 (L964-973) | ○ |
| C-094 | ExternalModule codeGeneration: asset | E-01 (L989-999) | ○ |
| C-095 | ExternalModule codeGeneration: css-url | E-01 (L1001-1008) | ○ |
| C-096 | ExternalModule codeGeneration: css-import | E-01 (L1009-1035) | ○ |
| C-097 | ExternalModule codeGeneration: css-import+layer/supports/media | E-01 (L1015-1022) | ○ |
| C-098 | ExternalModule codeGeneration: module.exports形式 | E-01 (L1066-1068) | ○ |
| C-099 | ExternalModule codeGeneration: IIFEラップ | E-01 (L1050-1052) | ○ |
| C-100 | ExternalModule codeGeneration: specifiers+registerRawExport | E-01 (L1055-1060) | ○ |
| C-101 | ExternalModule codeGeneration: NAMESPACE_OBJECT_EXPORT | E-01 (L1061-1065) | ○ |
| C-102 | ExternalModule codeGeneration: OriginalSource使用 | E-01 (L1082-1085) | ○ |
| C-103 | ExternalModule codeGeneration: RawSource使用 | E-01 (L1087-1089) | ○ |
| C-104 | ExternalModule size: 42返却 | E-01 (L1116-1118) | ○ |
| C-105 | ExternalModule updateHash | E-01 (L1125-1133) | ○ |
| C-106 | ExternalModule serialize | E-01 (L1138-1147) | ○ |
| C-107 | ExternalModule deserialize | E-01 (L1152-1161) | ○ |
| C-108 | ExternalModuleFactoryPlugin constructor | E-15 (L105-108) | ○ |
| C-109 | ExternalModuleFactoryPlugin apply: tapAsync登録 | E-15 (L116-117) | ○ |
| C-110 | handleExternal: value=falseでスキップ | E-16 (L133-135) | ○ |
| C-111 | handleExternal: value=trueでrequest使用 | E-16 (L138) | ○ |
| C-112 | handleExternal: 文字列タイプ自動抽出 | E-16 (L141-149), E-19 | ○ |
| C-113 | handleExternal: 配列先頭タイプ自動抽出 | E-16 (L150-162), E-19 | ○ |
| C-114 | handleExternal: HarmonyImportDependencyメタ | E-16 (L176-189) | ○ |
| C-115 | handleExternal: ImportDependencyメタ | E-16 (L176-189) | ○ |
| C-116 | handleExternal: CssImportDependencyメタ | E-16 (L191-196) | ○ |
| C-117 | handleExternal: CssUrlDependencyメタ | E-16 (L199-203) | ○ |
| C-118 | handleExternals: 文字列マッチ | E-17 (L223-226) | ○ |
| C-119 | handleExternals: 文字列不一致 | E-17 (L223-226) | ○ |
| C-120 | handleExternals: 配列の順次処理 | E-17 (L227-258) | ○ |
| C-121 | handleExternals: 空配列 | E-17 (L227-258) | ○ |
| C-122 | handleExternals: RegExpマッチ | E-17 (L259-262) | ○ |
| C-123 | handleExternals: RegExp不一致 | E-17 (L259-262) | ○ |
| C-124 | handleExternals: 関数呼び出し | E-17 (L263-341) | ○ |
| C-125 | handleExternals: Promise関数 | E-17 (L337-339) | ○ |
| C-126 | handleExternals: 関数エラー | E-17 (L270-271) | ○ |
| C-127 | handleExternals: 関数undefined返却 | E-17 (L273-274) | ○ |
| C-128 | handleExternals: 3引数deprecated関数 | E-17 (L278-285), E-20 | ○ |
| C-129 | handleExternals: オブジェクトキーマッチ | E-17 (L342-359) | ○ |
| C-130 | handleExternals: オブジェクトキー不一致 | E-17 (L342-359) | ○ |
| C-131 | handleExternals: byLayerレイヤー解決 | E-17, E-18 | △ |
| C-132 | handleExternal: 動的globalType関数 | E-16 (L165-168) | ○ |
| C-133 | resolveLayer: 基本動作 | E-18 | ○ |
| C-134 | resolveLayer: キャッシュ | E-18 (L83-90) | △ |
| C-135 | resolveLayer: nullレイヤー | E-18 | ○ |
| C-136 | ExternalsPlugin constructor | E-21 (L25-28) | ○ |
| C-137 | ExternalsPlugin apply: compileフック登録 | E-22 (L36) | ○ |
| C-138 | ExternalsPlugin apply: ファクトリプラグイン適用 | E-22 (L37-39) | ○ |
| C-139 | ExternalsPlugin apply: compilationフック登録 | E-23 (L42) | ○ |
| C-140 | ExternalsPlugin apply: rawExportMap未設定スキップ | E-23 (L48-50) | ○ |
| C-141 | ExternalsPlugin apply: InitFragmentフィルタリング | E-23 (L53-62) | ○ |
| C-142 | ExternalsPlugin apply: rawExportMapでfinalName更新 | E-23 (L70-79) | ○ |
| C-143 | ExternalsPlugin apply: rawExportMap該当なしでfinalName維持 | E-23 (L75-77) | ○ |
| C-144 | ExternalsPlugin apply: 変更時true返却 | E-23 (L85-87) | ○ |
| C-145 | ExternalsPlugin apply: chunkInitFragments未定義防御 | E-23 (L56-62) | ○ |
| C-146 | ExternalsPlugin apply: namespaceインポートスキップ | E-23 (L69) | ○ |
| C-147 | ExternalModule codeGeneration: initコード付き | E-01 (L1069-1071) | ○ |
| C-148 | ExternalModule codeGeneration: chunkInitFragmentsのdata格納 | E-01 (L1075-1078) | ○ |
| C-149 | ExternalModule codeGeneration: デフォルトruntimeRequirements | E-01 (L1091-1094), E-24 | ○ |
| C-150 | ExternalModule codeGeneration: runtimeRequirementsマージ | E-01 (L1095-1099) | ○ |
| C-151 | getExternalModuleNodeCommonjsInitFragment | E-14 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-032, C-033（generateModuleRemapping）**：ExportsInfoの内部構造（orderedExports, getNestedExportsInfo等）の詳細な挙動はExportsInfo.jsに依存しており、本モジュール単体では完全な検証が困難
  - 候補：`lib/ExportsInfo.js` / webpackテストスイート / ExportsInfoの型定義
- **C-131（byLayerレイヤー解決）**：resolveByProperty関数の内部動作は`lib/util/cleverMerge.js`に実装されており、byLayer解決の詳細ロジックは外部ファイルに依存
  - 候補：`lib/util/cleverMerge.js` / cleverMergeのテスト
- **C-134（resolveLayerキャッシュ）**：WeakMapによるキャッシュ機構の検証は、同一オブジェクト参照での2回目呼び出しが必要であり、テスト実装時のモック設計に注意が必要
  - 候補：WeakMapの標準仕様 / resolveLayer関数の直接テスト

## 5) リスクフラグ（レビュー観点）
- 0（低リスク）：大部分のテストケースはソースコードの分岐・処理に直接対応しており、信頼度が高い
- 1（中リスク）：generateModuleRemappingのテストケース（C-032, C-033）はExportsInfoの複雑なモック構造が必要
- 1（中リスク）：handleExternalsの配列ループ処理（C-120, C-121）は非同期コールバックの制御フローが複雑
- 0（低リスク）：ExternalsPlugin（C-136〜C-146）はConcatenatedModuleフックとの連携が主だが、ソースコードから明確に読み取れる

## 6) レビュアーチェックリスト（最小）
- [ ] ExternalModuleの各externalType（this/window/self/global/commonjs/commonjs2/commonjs-module/commonjs-static/node-commonjs/amd/umd/system/jsonp/import/script/module/var/promise/assign）に対するテストケースが網羅されているか
- [ ] _getSourceDataのswitch文の全分岐がカバーされているか
- [ ] buildメソッドのexternalTypeごとのbuildMeta設定が正しくテストされているか
- [ ] handleExternalsの各externals形式（string/array/RegExp/function/object）が網羅されているか
- [ ] ExternalsPluginのcompileフックとcompilationフックの両方がテストされているか
- [ ] ModuleExternalInitFragmentのgetContentメソッドの全分岐（namespace/side-effect only/named）がカバーされているか
- [ ] generateModuleRemappingのテストケースにおけるExportsInfoモックの妥当性を確認
