---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 169
  claims_with_evidence: 169
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：169 / 169、根拠なし：0
- 優先レビュー（高）
  1. **該当なし**：全テストケースにソースコード上の根拠あり
  2. **AssetModulesPluginのapplyメソッド関連テスト（C-128〜C-146）**：フック登録の網羅性を重点確認推奨
  3. **AssetGeneratorのgenerate関連テスト（C-45〜C-49）**：複雑な条件分岐の網羅性を重点確認推奨

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

- E-01: `lib/asset/AssetGenerator.js` - AssetGeneratorクラスおよびユーティリティ関数の実装（mergeMaybeArrays, mergeAssetInfo, mergeRelatedInfo, encodeDataUri, decodeDataUriContent, 各メソッド）
- E-02: `lib/asset/AssetSourceGenerator.js` - AssetSourceGeneratorクラスの実装（generate, generateError, getConcatenationBailoutReason, getTypes, getSize）
- E-03: `lib/asset/AssetBytesGenerator.js` - AssetBytesGeneratorクラスの実装（generate, generateError, getConcatenationBailoutReason, getTypes, getSize）
- E-04: `lib/asset/AssetParser.js` - AssetParserクラスの実装（constructor, parse）
- E-05: `lib/asset/AssetSourceParser.js` - AssetSourceParserクラスの実装（parse）
- E-06: `lib/asset/AssetBytesParser.js` - AssetBytesParserクラスの実装（parse）
- E-07: `lib/asset/AssetModulesPlugin.js` - AssetModulesPluginクラスの実装（constructor, apply）
- E-08: `lib/asset/RawDataUrlModule.js` - RawDataUrlModuleクラスの実装（constructor, getSourceTypes, identifier, size, readableIdentifier, needBuild, build, codeGeneration, updateHash, serialize, deserialize）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | mergeMaybeArrays: 両方が配列の場合にマージされた配列が返ること | E-01 (L67-75) | ○ |
| C-02 | mergeMaybeArrays: 片方が配列で片方がスカラーの場合に正しくマージされること | E-01 (L67-75) | ○ |
| C-03 | mergeMaybeArrays: 両方がスカラーの場合に配列が返ること | E-01 (L67-75) | ○ |
| C-04 | mergeMaybeArrays: 両方がnullの場合に[null]が返ること | E-01 (L67-75) | ○ |
| C-05 | mergeMaybeArrays: 重複要素がある場合にSetで重複排除されること | E-01 (L69) | ○ |
| C-06 | mergeAssetInfo: 競合しないキーのマージが正しく行われること | E-01 (L82-115) | ○ |
| C-07 | mergeAssetInfo: 同一キー同一値の場合にそのまま返ること | E-01 (L87) | ○ |
| C-08 | mergeAssetInfo: contenthashキーの競合時にmergeMaybeArraysで結合されること | E-01 (L89-94) | ○ |
| C-09 | mergeAssetInfo: immutableキーの競合時にOR演算されること | E-01 (L95-99) | ○ |
| C-10 | mergeAssetInfo: relatedキーの競合時にmergeRelatedInfoで結合されること | E-01 (L101-108) | ○ |
| C-11 | mergeAssetInfo: 未知のキーの競合時にErrorがスローされること | E-01 (L110) | ○ |
| C-12 | mergeRelatedInfo: 競合しないキーが正しくマージされること | E-01 (L122-131) | ○ |
| C-13 | mergeRelatedInfo: 同一キーの競合時にmergeMaybeArraysで結合されること | E-01 (L127) | ○ |
| C-14 | encodeDataUri: base64エンコーディングで正しくエンコードされること | E-01 (L138-169) | ○ |
| C-15 | encodeDataUri: encoding=falseでURIエンコードされること | E-01 (L148-163) | ○ |
| C-16 | encodeDataUri: encoding=falseで特殊文字がパーセントエンコードされること | E-01 (L157-161) | ○ |
| C-17 | encodeDataUri: 未サポートのエンコーディングでErrorがスローされること | E-01 (L165) | ○ |
| C-18 | decodeDataUriContent: base64コンテンツが正しくデコードされること | E-01 (L176-189) | ○ |
| C-19 | decodeDataUriContent: URIエンコードされたコンテンツが正しくデコードされること | E-01 (L184-185) | ○ |
| C-20 | decodeDataUriContent: 不正なURIエンコードの場合に元のコンテンツがそのまま返ること | E-01 (L186-188) | ○ |
| C-21 | AssetGenerator.constructor: 全パラメータが正しくプロパティに設定されること | E-01 (L202-223) | ○ |
| C-22 | AssetGenerator.getSourceFileName: 相対パスに変換されること | E-01 (L230-237) | ○ |
| C-23 | AssetGenerator.getFullContentHash: ソースが存在する場合にハッシュが計算されること | E-01 (L244-271) | ○ |
| C-24 | AssetGenerator.getFullContentHash: hashSaltが反映されること | E-01 (L247-249) | ○ |
| C-25 | AssetGenerator.getFullContentHash: ソースがnullの場合にエラーなく処理されること | E-01 (L253-255) | ○ |
| C-26 | AssetGenerator.getFullContentHash: module.errorがハッシュに含まれること | E-01 (L257-259) | ○ |
| C-27 | AssetGenerator.getFilenameWithInfo: ファイル名とassetInfoが返ること | E-01 (L280-322) | ○ |
| C-28 | AssetGenerator.getFilenameWithInfo: outputPathが指定時にパスが結合されること | E-01 (L305-319) | ○ |
| C-29 | AssetGenerator.getFilenameWithInfo: generatorOptions.filenameが優先されること | E-01 (L286-288) | ○ |
| C-30 | AssetGenerator.getAssetPathWithInfo: publicPath指定+JSの場合 | E-01 (L349-361) | ○ |
| C-31 | AssetGenerator.getAssetPathWithInfo: publicPath指定+CSS URLの場合 | E-01 (L362-377) | ○ |
| C-32 | AssetGenerator.getAssetPathWithInfo: publicPath未指定+JSの場合 | E-01 (L378-384) | ○ |
| C-33 | AssetGenerator.getAssetPathWithInfo: publicPath未指定+CSS URLの場合 | E-01 (L385-395) | ○ |
| C-34 | getConcatenationBailoutReason: undefinedが返ること | E-01 (L408-410) | ○ |
| C-35 | getMimeType: 明示的mimetypeが返ること | E-01 (L416-462) | ○ |
| C-36 | getMimeType: resourceResolveDataからmimetypeが取得されること | E-01 (L433-438) | ○ |
| C-37 | getMimeType: 拡張子からMIMEタイプが推定されること | E-01 (L439-449) | ○ |
| C-38 | getMimeType: 拡張子から推定できない場合にErrorがスローされること | E-01 (L442-449) | ○ |
| C-39 | getMimeType: dataUrlOptionsが関数の場合にErrorがスローされること | E-01 (L417-421) | ○ |
| C-40 | getMimeType: mimetypeが文字列でない場合にErrorがスローされること | E-01 (L453-459) | ○ |
| C-41 | generateDataUri: dataUrlOptionsが関数の場合 | E-01 (L474-478) | ○ |
| C-42 | generateDataUri: dataUrlOptionsがオブジェクトの場合 | E-01 (L479-518) | ○ |
| C-43 | generateDataUri: encodingがfalseの場合 | E-01 (L480-518) | ○ |
| C-44 | generateDataUri: resourceResolveDataのencodingが使用されること | E-01 (L498-509) | ○ |
| C-45 | generate: dataUrl=true+JSの場合 | E-01 (L529-557) | ○ |
| C-46 | generate: dataUrl=true+CSS URLの場合 | E-01 (L638-640) | ○ |
| C-47 | generate: dataUrl=false+JSの場合 | E-01 (L558-637) | ○ |
| C-48 | generate: concatenationScope有効時 | E-01 (L623-633) | ○ |
| C-49 | generate: assetタイプの場合 | E-01 (L642) | ○ |
| C-50 | generateError: assetタイプの場合 | E-01 (L651-664) | ○ |
| C-51 | generateError: JavaScriptタイプの場合 | E-01 (L656-659) | ○ |
| C-52 | generateError: その他のタイプの場合 | E-01 (L660-662) | ○ |
| C-53 | getTypes: dataUrl+JS接続の場合 | E-01 (L670-706) | ○ |
| C-54 | getTypes: dataUrl+CSS接続の場合 | E-01 (L687-689) | ○ |
| C-55 | getTypes: dataUrl+JS+CSS接続の場合 | E-01 (L685-686) | ○ |
| C-56 | getTypes: リソース+JS接続の場合 | E-01 (L696-702) | ○ |
| C-57 | getTypes: dataUrl+接続なしの場合 | E-01 (L693) | ○ |
| C-58 | getTypes: リソース+接続なしの場合 | E-01 (L705) | ○ |
| C-59 | getSize: assetタイプの場合 | E-01 (L713-723) | ○ |
| C-60 | getSize: assetタイプでoriginalSourceがnullの場合 | E-01 (L718-719) | ○ |
| C-61 | getSize: dataUrl=trueの場合 | E-01 (L725-736) | ○ |
| C-62 | getSize: リソースモードの場合 | E-01 (L740) | ○ |
| C-63 | updateHash: dataUrl+オブジェクトの場合 | E-01 (L748-773) | ○ |
| C-64 | updateHash: dataUrl+関数+identの場合 | E-01 (L758-762) | ○ |
| C-65 | updateHash: リソース+publicPath文字列の場合 | E-01 (L796-798) | ○ |
| C-66 | updateHash: リソース+publicPath関数の場合 | E-01 (L791-795) | ○ |
| C-67 | updateHash: リソース+publicPath未指定の場合 | E-01 (L799-801) | ○ |
| C-68 | AssetSourceGenerator.constructor: moduleGraphが設定されること | E-02 (L34-38) | ○ |
| C-69 | AssetSourceGenerator.generate: JS+ソースありの場合 | E-02 (L45-78) | ○ |
| C-70 | AssetSourceGenerator.generate: JS+concatenationScopeの場合 | E-02 (L64-71) | ○ |
| C-71 | AssetSourceGenerator.generate: JS+originalSource=nullの場合 | E-02 (L54-56) | ○ |
| C-72 | AssetSourceGenerator.generate: CSS URL+ソースありの場合 | E-02 (L79-92) | ○ |
| C-73 | AssetSourceGenerator.generate: CSS URL+originalSource=nullの場合 | E-02 (L83-85) | ○ |
| C-74 | AssetSourceGenerator.generate: 不明タイプの場合 | E-02 (L93-94) | ○ |
| C-75 | AssetSourceGenerator.generate: Bufferコンテンツのutf8変換 | E-02 (L59-60) | ○ |
| C-76 | AssetSourceGenerator.generateError: JSタイプの場合 | E-02 (L104-114) | ○ |
| C-77 | AssetSourceGenerator.generateError: その他タイプの場合 | E-02 (L112-113) | ○ |
| C-78 | AssetSourceGenerator.getConcatenationBailoutReason: undefinedが返ること | E-02 (L121-123) | ○ |
| C-79 | AssetSourceGenerator.getTypes: JS接続の場合 | E-02 (L129-152) | ○ |
| C-80 | AssetSourceGenerator.getTypes: CSS接続の場合 | E-02 (L145-146) | ○ |
| C-81 | AssetSourceGenerator.getTypes: JS+CSS接続の場合 | E-02 (L143-144) | ○ |
| C-82 | AssetSourceGenerator.getTypes: 接続なしの場合 | E-02 (L151) | ○ |
| C-83 | AssetSourceGenerator.getSize: ソースありの場合 | E-02 (L159-168) | ○ |
| C-84 | AssetSourceGenerator.getSize: ソースなしの場合 | E-02 (L162-163) | ○ |
| C-85 | AssetBytesGenerator.constructor: moduleGraphが設定されること | E-03 (L34-38) | ○ |
| C-86 | AssetBytesGenerator.generate: JS+base64+toBinaryラップ | E-03 (L45-78) | ○ |
| C-87 | AssetBytesGenerator.generate: JS+concatenationScope | E-03 (L65-72) | ○ |
| C-88 | AssetBytesGenerator.generate: JS+originalSource=null | E-03 (L54-56) | ○ |
| C-89 | AssetBytesGenerator.generate: CSS URL+base64 DataURL | E-03 (L80-93) | ○ |
| C-90 | AssetBytesGenerator.generate: CSS URL+originalSource=null | E-03 (L83-85) | ○ |
| C-91 | AssetBytesGenerator.generate: 不明タイプ | E-03 (L94-96) | ○ |
| C-92 | AssetBytesGenerator.generate: runtimeRequirementsへの登録 | E-03 (L60-61) | ○ |
| C-93 | AssetBytesGenerator.generateError: JSタイプ | E-03 (L105-115) | ○ |
| C-94 | AssetBytesGenerator.generateError: その他タイプ | E-03 (L113-114) | ○ |
| C-95 | AssetBytesGenerator.getConcatenationBailoutReason: undefined | E-03 (L122-124) | ○ |
| C-96 | AssetBytesGenerator.getTypes: JS接続 | E-03 (L130-153) | ○ |
| C-97 | AssetBytesGenerator.getTypes: CSS接続 | E-03 (L146-147) | ○ |
| C-98 | AssetBytesGenerator.getTypes: JS+CSS接続 | E-03 (L144-145) | ○ |
| C-99 | AssetBytesGenerator.getTypes: 接続なし | E-03 (L152) | ○ |
| C-100 | AssetBytesGenerator.getSize: ソースあり | E-03 (L160-168) | ○ |
| C-101 | AssetBytesGenerator.getSize: ソースなし | E-03 (L163-164) | ○ |
| C-102 | AssetParser.constructor: dataUrlCondition設定 | E-04 (L24-28) | ○ |
| C-103 | AssetParser.parse: 関数型dataUrlCondition | E-04 (L50-54) | ○ |
| C-104 | AssetParser.parse: boolean=true | E-04 (L55-56) | ○ |
| C-105 | AssetParser.parse: boolean=false | E-04 (L55-56) | ○ |
| C-106 | AssetParser.parse: オブジェクト+サイズ以下 | E-04 (L57-64) | ○ |
| C-107 | AssetParser.parse: オブジェクト+サイズ超過 | E-04 (L57-64) | ○ |
| C-108 | AssetParser.parse: サイズがmaxSizeと等しい場合 | E-04 (L62, <=演算子) | ○ |
| C-109 | AssetParser.parse: strict=true設定 | E-04 (L43) | ○ |
| C-110 | AssetParser.parse: exportsType='default'設定 | E-04 (L47) | ○ |
| C-111 | AssetParser.parse: defaultObject=false設定 | E-04 (L48) | ○ |
| C-112 | AssetParser.parse: preparsed ASTでエラー | E-04 (L36-38) | ○ |
| C-113 | AssetParser.parse: Buffer入力 | E-04 (L36, Buffer.isBuffer) | ○ |
| C-114 | AssetParser.parse: 予期しないdataUrlCondition型 | E-04 (L65-66) | ○ |
| C-115 | AssetSourceParser.parse: strict=true設定 | E-05 (L27) | ○ |
| C-116 | AssetSourceParser.parse: exportsType='default'設定 | E-05 (L29) | ○ |
| C-117 | AssetSourceParser.parse: defaultObject=false設定 | E-05 (L31) | ○ |
| C-118 | AssetSourceParser.parse: stateが返却 | E-05 (L33) | ○ |
| C-119 | AssetSourceParser.parse: preparsed ASTでエラー | E-05 (L22-24) | ○ |
| C-120 | AssetSourceParser.parse: Buffer入力 | E-05 (L22, Buffer.isBuffer) | ○ |
| C-121 | AssetBytesParser.parse: strict=true設定 | E-06 (L27) | ○ |
| C-122 | AssetBytesParser.parse: exportsType='default'設定 | E-06 (L29) | ○ |
| C-123 | AssetBytesParser.parse: defaultObject=false設定 | E-06 (L31) | ○ |
| C-124 | AssetBytesParser.parse: stateが返却 | E-06 (L33) | ○ |
| C-125 | AssetBytesParser.parse: preparsed ASTでエラー | E-06 (L22-24) | ○ |
| C-126 | AssetBytesParser.parse: Buffer入力 | E-06 (L22, Buffer.isBuffer) | ○ |
| C-127 | AssetModulesPlugin.constructor: options設定 | E-07 (L98-100) | ○ |
| C-128 | AssetModulesPlugin.apply: compilation.tap登録 | E-07 (L108-354) | ○ |
| C-129 | AssetModulesPlugin.apply: 5つのモジュールタイプへのフック登録 | E-07 (L112-133) | ○ |
| C-130 | AssetModulesPlugin.apply: sideEffectFreeフラグ | E-07 (L127-129) | ○ |
| C-131 | AssetModulesPlugin.apply: デフォルトmaxSize=8096 | E-07 (L136-151) | ○ |
| C-132 | AssetModulesPlugin.apply: inline→AssetParser(true) | E-07 (L152-158) | ○ |
| C-133 | AssetModulesPlugin.apply: resource→AssetParser(false) | E-07 (L159-165) | ○ |
| C-134 | AssetModulesPlugin.apply: source→AssetSourceParser | E-07 (L166-172) | ○ |
| C-135 | AssetModulesPlugin.apply: bytes→AssetBytesParser | E-07 (L173-179) | ○ |
| C-136 | AssetModulesPlugin.apply: generator dataUrlオプション | E-07 (L186-227) | ○ |
| C-137 | AssetModulesPlugin.apply: resourceのdataUrl=undefined | E-07 (L193) | ○ |
| C-138 | AssetModulesPlugin.apply: inlineのfilename=undefined | E-07 (L210-211) | ○ |
| C-139 | AssetModulesPlugin.apply: source→AssetSourceGenerator | E-07 (L228-234) | ○ |
| C-140 | AssetModulesPlugin.apply: bytes→AssetBytesGenerator | E-07 (L236-242) | ○ |
| C-141 | AssetModulesPlugin.apply: renderManifestへのアセット追加 | E-07 (L244-332) | ○ |
| C-142 | AssetModulesPlugin.apply: エラーモジュールのgetFullContentHash使用 | E-07 (L273-301) | ○ |
| C-143 | AssetModulesPlugin.apply: レンダリングエラーの情報付加 | E-07 (L323-327) | ○ |
| C-144 | AssetModulesPlugin.apply: prepareModuleExecutionでアセット追加 | E-07 (L334-352) | ○ |
| C-145 | AssetModulesPlugin.apply: ソースundefinedの早期リターン | E-07 (L339) | ○ |
| C-146 | AssetModulesPlugin.apply: emit=falseオプション | E-07 (L224) | ○ |
| C-147 | RawDataUrlModule.constructor: プロパティ初期化 | E-08 (L43-53) | ○ |
| C-148 | RawDataUrlModule.constructor: readableIdentifierデフォルト | E-08 (L52) | ○ |
| C-149 | RawDataUrlModule.constructor: urlBuffer生成 | E-08 (L48) | ○ |
| C-150 | RawDataUrlModule.constructor: 空URL時のurlBuffer | E-08 (L48, 空文字はfalsy) | ○ |
| C-151 | RawDataUrlModule.getSourceTypes: JAVASCRIPT_TYPES | E-08 (L58-60) | ○ |
| C-152 | RawDataUrlModule.identifier: identifierStr | E-08 (L65-67) | ○ |
| C-153 | RawDataUrlModule.size: URL長さ | E-08 (L73-78) | ○ |
| C-154 | RawDataUrlModule.size: 最小サイズ保証 | E-08 (L77, Math.max(1,...)) | ○ |
| C-155 | RawDataUrlModule.size: url=undefined時のurlBuffer復元 | E-08 (L74-75) | ○ |
| C-156 | RawDataUrlModule.readableIdentifier: shorten呼び出し | E-08 (L84-88) | ○ |
| C-157 | RawDataUrlModule.needBuild: buildMeta未設定→true | E-08 (L95-97) | ○ |
| C-158 | RawDataUrlModule.needBuild: buildMeta設定済み→false | E-08 (L96) | ○ |
| C-159 | RawDataUrlModule.build: buildMeta/buildInfo初期化 | E-08 (L107-113) | ○ |
| C-160 | RawDataUrlModule.build: callback呼び出し | E-08 (L112) | ○ |
| C-161 | RawDataUrlModule.codeGeneration: JS出力 | E-08 (L119-138) | ○ |
| C-162 | RawDataUrlModule.codeGeneration: runtimeRequirements | E-08 (L135-136) | ○ |
| C-163 | RawDataUrlModule.codeGeneration: data設定 | E-08 (L131-133) | ○ |
| C-164 | RawDataUrlModule.codeGeneration: url=undefined時の復元 | E-08 (L120-121) | ○ |
| C-165 | RawDataUrlModule.updateHash: urlBuffer更新 | E-08 (L145-148) | ○ |
| C-166 | RawDataUrlModule.serialize: 3プロパティ書き込み | E-08 (L153-161) | ○ |
| C-167 | RawDataUrlModule.deserialize: 3プロパティ読み込み | E-08 (L166-174) | ○ |
| C-168 | RawDataUrlModule.serialize: super.serialize呼び出し | E-08 (L160) | ○ |
| C-169 | RawDataUrlModule.deserialize: super.deserialize呼び出し | E-08 (L173) | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし。全テストケースはソースコードの実装から直接導出されており、根拠なしの項目はない。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースにソースコード上の根拠あり
- 1: 中リスク - AssetModulesPluginのapplyメソッドは複雑なフック登録を含むため、統合テストでの確認も推奨
- 1: 中リスク - AssetGeneratorのgenerate/getTypesメソッドは多数の条件分岐を持ち、組み合わせパターンの網羅性は要確認

## 6) レビュアーチェックリスト（最小）
- [ ] mergeMaybeArrays/mergeAssetInfo/mergeRelatedInfoのマージロジックが仕様と合致しているか
- [ ] encodeDataUri/decodeDataUriContentのエンコーディング処理が正しいか
- [ ] AssetParser.parseのdataUrlConditionの閾値判定（<=）が仕様通りか（デフォルト8096バイト）
- [ ] AssetModulesPlugin.applyの5つのモジュールタイプに対するフック登録が網羅されているか
- [ ] AssetGenerator.getTypesの接続元タイプによる分岐が全パターン網羅されているか
- [ ] RawDataUrlModule.sizeのMath.max(1, ...)による最小サイズ保証が意図通りか
- [ ] AssetBytesGenerator.generateでRuntimeGlobals.toBinaryへの依存が正しく登録されているか
