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

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：38 / 40、根拠なし：2
- 優先レビュー（高）
  1. **C-04（UT-ENT-004）**：空文字列のcontext/entryが実際に許容されるかの明示的な仕様根拠が不足
  2. **C-13（UT-ENT-013）**：optionsがundefinedの場合のtypeof判定挙動の暗黙的な期待

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

- E-01: `lib/EntryPlugin.js` - EntryPluginクラス定義（コンストラクタ、apply、createDependency）
- E-02: `lib/EntryOptionPlugin.js` - EntryOptionPluginクラス定義（apply、applyEntryOption、entryDescriptionToOptions）
- E-03: `lib/DynamicEntryPlugin.js` - DynamicEntryPluginクラス定義（コンストラクタ、apply）
- E-04: `lib/SingleEntryPlugin.js` - EntryPluginの再エクスポート
- E-05: `lib/dependencies/EntryDependency.js` - EntryDependencyクラス定義
- E-06: `lib/Entrypoint.js` - EntryOptions型定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | EntryPlugin constructorでcontext/entry/optionsが正しく設定される | E-01 (L22-26) | ○ |
| C-02 | options省略時に空文字列がデフォルト設定される | E-01 (L25: `this.options = options \|\| ""`) | ○ |
| C-03 | 文字列optionsがそのまま設定される | E-01 (L25) | ○ |
| C-04 | 空文字列のcontext/entryが許容される | **根拠なし**（コード上は制約なしだが明示的仕様なし） | △ |
| C-05 | compilation.dependencyFactoriesにEntryDependencyが登録される | E-01 (L34-42) | ○ |
| C-06 | compilation.addEntryが正しいパラメータで呼ばれる | E-01 (L47-51) | ○ |
| C-07 | addEntryエラー時にcallbackにエラーが渡される | E-01 (L48-49: `callback(err)`) | ○ |
| C-08 | createDependencyの戻り値がmakeフックで使用される | E-01 (L45-48) | ○ |
| C-09 | createDependencyでEntryDependencyインスタンスが生成される | E-01 (L60), E-05 | ○ |
| C-10 | オブジェクトoptionsの場合dep.loc.nameにoptions.nameが設定される | E-01 (L62-66: typeof options === "object") | ○ |
| C-11 | 文字列optionsの場合dep.loc.nameに文字列が設定される | E-01 (L67) | ○ |
| C-12 | 空文字列entryでEntryDependencyが生成される | E-01 (L60), E-05 (L15-17) | ○ |
| C-13 | undefinedのoptionsでdep.loc.nameがundefinedになる | **根拠なし**（typeof undefined === "object"はfalseだが、三項演算子でoptionsがそのまま返る） | △ |
| C-14 | entryOptionフックにタップされる | E-02 (L21) | ○ |
| C-15 | entryOptionフックのコールバックがtrueを返す | E-02 (L23: `return true`) | ○ |
| C-16 | applyEntryOptionが正しい引数で呼ばれる | E-02 (L22) | ○ |
| C-17 | 関数型entryでDynamicEntryPluginが適用される | E-02 (L34-37: `typeof entry === "function"`) | ○ |
| C-18 | オブジェクト型entryでEntryPluginが適用される | E-02 (L39-55) | ○ |
| C-19 | 複数エントリ名で全てが処理される | E-02 (L41: `Object.keys(entry)`) | ○ |
| C-20 | 複数importで全てが処理される | E-02 (L51: `for (const entry of descImport)`) | ○ |
| C-21 | 空オブジェクトentryでEntryPluginが適用されない | E-02 (L41: `Object.keys({})` は空配列) | ○ |
| C-22 | 基本的なEntryDescriptionがEntryOptionsに変換される | E-02 (L64-78) | ○ |
| C-23 | 全オプションフィールドが正しくマッピングされる | E-02 (L66-78) | ○ |
| C-24 | chunkLoading指定時にEnableChunkLoadingPlugin.checkEnabledが呼ばれる | E-02 (L79-83) | ○ |
| C-25 | wasmLoading指定時にEnableWasmLoadingPlugin.checkEnabledが呼ばれる | E-02 (L84-88) | ○ |
| C-26 | library指定時にEnableLibraryPlugin.checkEnabledが呼ばれる | E-02 (L89-93) | ○ |
| C-27 | 最小限のdescでundefinedフィールドがoptionsに含まれる | E-02 (L66-78: 各フィールドがdesc.xxxから直接取得) | ○ |
| C-28 | chunkLoading/wasmLoading/library未指定時にcheckEnabledが呼ばれない | E-02 (L79-93: 各if文の条件) | ○ |
| C-29 | DynamicEntryPlugin constructorでcontext/entryが設定される | E-03 (L27-32) | ○ |
| C-30 | DynamicEntryPluginでdependencyFactoriesにEntryDependencyが登録される | E-03 (L40-48) | ○ |
| C-31 | entry関数解決後にaddEntryが呼ばれる | E-03 (L50-88) | ○ |
| C-32 | 複数エントリ名で全てaddEntryが呼ばれる | E-03 (L55: `Object.keys(entry)`) | ○ |
| C-33 | 複数importで全てaddEntryが呼ばれる | E-03 (L62-63: `for (const entry of desc.import)`) | ○ |
| C-34 | entryDescriptionToOptionsが呼ばれる | E-03 (L57-60) | ○ |
| C-35 | createDependencyが正しい引数で呼ばれる | E-03 (L74) | ○ |
| C-36 | entry関数reject時にPromiseがrejectされる | E-03 (L51: `Promise.resolve(this.entry())`) | ○ |
| C-37 | addEntryエラー時にPromiseがrejectされる | E-03 (L77: `if (err) return reject(err)`) | ○ |
| C-38 | 空オブジェクト返却時にaddEntryが呼ばれない | E-03 (L55: `Object.keys({})` は空配列) | ○ |
| C-39 | tapPromiseでmakeフックに登録される | E-03 (L50) | ○ |
| C-40 | SingleEntryPluginがEntryPluginと同一である | E-04 (L8: `module.exports = require("./EntryPlugin")`) | ○ |

## 4) 不足情報（Unknown / Missing）
- C-04: 空文字列のcontext/entryが渡された場合の挙動について、webpackの公式仕様や型定義では明示的にバリデーションルールが記述されていない。コード上は制約がないため動作するが、意図的な仕様かは不明。
  - 候補：webpack公式ドキュメント / webpackの型定義ファイル / 既存テストケース
- C-13: optionsがundefinedの場合、`typeof undefined === "object"` はfalseとなるため、三項演算子のfalse分岐で`options`（= undefined）がdep.loc.nameに設定される。JavaScript仕様上は正しいが、これが意図的な挙動かは明示的な仕様がない。
  - 候補：JSDoc型注釈 / webpack内部のoptions処理フロー / 既存テストケース

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - EntryPlugin/DynamicEntryPlugin/EntryOptionPluginの基本的なコンストラクタ・applyメソッドはソースコードから直接読み取れる明確な処理である
- 0: 低リスク - SingleEntryPluginは単純な再エクスポートであり、検証は容易
- 1: 中リスク - entryDescriptionToOptions内のcheckEnabled呼び出しは外部プラグインへの依存があり、それらプラグインの挙動が変更された場合にテストケースの妥当性が影響を受ける
- 0: 低リスク - DynamicEntryPluginのPromiseベースの処理フローはソースコードから明確に読み取れる

## 6) レビュアーチェックリスト（最小）
- [ ] EntryPlugin.createDependencyのoptions型分岐（オブジェクト/文字列/undefined）のテストケースが網羅されているか
- [ ] EntryOptionPlugin.applyEntryOptionのentry型分岐（関数/オブジェクト）のテストケースが適切か
- [ ] DynamicEntryPluginのPromise処理（正常系/reject）のテストケースが十分か
- [ ] entryDescriptionToOptionsの各フィールドマッピングと条件分岐（chunkLoading/wasmLoading/library）のカバレッジが妥当か
- [ ] 境界値テスト（空オブジェクト、空文字列、undefined）の期待結果がJavaScript仕様と一致しているか
- [ ] SingleEntryPluginの後方互換性テストが必要十分か
