---
generated_at: 2026-03-01 10:00:00
metrics:
  claims_total: 56
  claims_with_evidence: 54
  claims_without_evidence: 2
confidence_derived: 0.96
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：54 / 56、根拠なし：2
- 優先レビュー（高）
  1. **C-02 (UT-URL-002)**：Windowsパスの変換はソースコード内に明示的な処理がなくpathToFileURLの動作に依存
  2. **C-03 (UT-URL-003)**：resource=undefinedの場合のエラーはpathToFileURLの内部挙動に依存

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

- E-01: `lib/url/URLParserPlugin.js` 34行目 - `getUrl` 関数定義（pathToFileURL呼び出し）
- E-02: `lib/url/URLParserPlugin.js` 41-55行目 - `isMetaUrl` 関数定義（MemberExpressionChain検証ロジック）
- E-03: `lib/url/URLParserPlugin.js` 58行目 - `getEvaluatedExprCache` WeakMap定義
- E-04: `lib/url/URLParserPlugin.js` 65-89行目 - `getEvaluatedExpr` 関数定義（evaluate内部関数含む）
- E-05: `lib/url/URLParserPlugin.js` 91-98行目 - `URLParserPlugin` クラスのconstructor定義
- E-06: `lib/url/URLParserPlugin.js` 104-107行目 - `apply`メソッド内 canRename フック登録
- E-07: `lib/url/URLParserPlugin.js` 108-118行目 - `apply`メソッド内 evaluateNewExpression フック
- E-08: `lib/url/URLParserPlugin.js` 119-250行目 - `apply`メソッド内 new フック（主要ロジック）
- E-09: `lib/url/URLParserPlugin.js` 124-134行目 - commentErrors処理
- E-10: `lib/url/URLParserPlugin.js` 136-163行目 - webpackIgnore処理
- E-11: `lib/url/URLParserPlugin.js` 172-188行目 - 静的URL処理（URLDependency作成）
- E-12: `lib/url/URLParserPlugin.js` 190行目 - dynamicUrl===false チェック
- E-13: `lib/url/URLParserPlugin.js` 198-229行目 - webpackInclude/webpackExclude処理
- E-14: `lib/url/URLParserPlugin.js` 230-249行目 - コンテキスト依存関係作成（URLContextDependency）
- E-15: `lib/url/URLParserPlugin.js` 251-262行目 - isPure フック
- E-16: `lib/url/URLParserPlugin.js` 266行目 - module.exports

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getUrl: moduleのresourceからfile URLが正しく生成される | E-01 | ○ |
| C-02 | getUrl: WindowsパスでもURL変換される | E-01 | △ |
| C-03 | getUrl: resourceがundefinedの場合にエラーがスローされる | E-01 | △ |
| C-04 | isMetaUrl: import.meta.urlの場合にtrueが返る | E-02 | ○ |
| C-05 | isMetaUrl: chain.members.lengthが1でない場合にfalseが返る | E-02 | ○ |
| C-06 | isMetaUrl: chain.object.typeがMetaPropertyでない場合にfalseが返る | E-02 | ○ |
| C-07 | isMetaUrl: chain.object.meta.nameがimportでない場合にfalseが返る | E-02 | ○ |
| C-08 | isMetaUrl: chain.object.property.nameがmetaでない場合にfalseが返る | E-02 | ○ |
| C-09 | isMetaUrl: chain.members[0]がurlでない場合にfalseが返る | E-02 | ○ |
| C-10 | getEvaluatedExpr: 2引数のnew URL式が正しく評価される | E-04 | ○ |
| C-11 | getEvaluatedExpr: キャッシュされた結果が2回目以降で返却される | E-03, E-04 | ○ |
| C-12 | getEvaluatedExpr: 引数が2つでない場合にundefinedが返る | E-04 | ○ |
| C-13 | getEvaluatedExpr: 第2引数がMemberExpressionでない場合にundefinedが返る | E-04 | ○ |
| C-14 | getEvaluatedExpr: 第1引数がSpreadElementの場合にundefinedが返る | E-04 | ○ |
| C-15 | getEvaluatedExpr: 第2引数がimport.meta.urlでない場合にundefinedが返る | E-04 | ○ |
| C-16 | URLParserPlugin constructor: optionsが正しく保持される | E-05 | ○ |
| C-17 | URLParserPlugin constructor: 空のoptionsで初期化できる | E-05 | ○ |
| C-18 | apply: canRename.for('URL').tapが呼ばれる | E-06 | ○ |
| C-19 | apply: evaluateNewExpression.for('URL').tapが呼ばれる | E-07 | ○ |
| C-20 | apply: new.for('URL').tapが呼ばれる | E-08 | ○ |
| C-21 | apply: isPure.for('NewExpression').tapが呼ばれる | E-15 | ○ |
| C-22 | evaluateNewExpression: 有効な静的URL式が評価される | E-07 | ○ |
| C-23 | evaluateNewExpression: requestが取得できない場合にundefinedが返る | E-07 | ○ |
| C-24 | new hook: コメントパースエラー時にWarningが追加される | E-09 | ○ |
| C-25 | new hook: webpackIgnoreがboolean以外の場合にWarningが追加される | E-10 | ○ |
| C-26 | new hook: webpackIgnore=trueの場合にConstDependencyが追加される | E-10 | ○ |
| C-27 | new hook: webpackIgnore=trueかつ引数不足でundefinedが返る | E-10 | ○ |
| C-28 | new hook: webpackIgnore=trueかつarg2が非import.meta.urlでundefinedが返る | E-10 | ○ |
| C-29 | new hook: 静的URLでURLDependencyが作成される | E-11 | ○ |
| C-30 | new hook: relativeオプションの反映 | E-08, E-11 | ○ |
| C-31 | new hook: InnerGraph.onUsageが呼ばれる | E-11 | ○ |
| C-32 | new hook: dynamicUrl=falseで処理が中断される | E-12 | ○ |
| C-33 | new hook: 動的URLでURLContextDependencyが作成される | E-14 | ○ |
| C-34 | new hook: dep.optionalがparser.scope.inTryに基づく | E-14 | ○ |
| C-35 | new hook: inTry=falseでdep.optional=false | E-14 | ○ |
| C-36 | new hook: ContextDependencyHelpers.createがnull返却時にundefinedが返る | E-14 | ○ |
| C-37 | new hook: webpackIncludeがRegExpの場合にincludeが渡される | E-13 | ○ |
| C-38 | new hook: webpackIncludeがRegExpでない場合にWarningが追加される | E-13 | ○ |
| C-39 | new hook: webpackIncludeがfalsyの場合にWarningが追加される | E-13 | ○ |
| C-40 | new hook: webpackExcludeがRegExpの場合にexcludeが渡される | E-13 | ○ |
| C-41 | new hook: webpackExcludeがRegExpでない場合にWarningが追加される | E-13 | ○ |
| C-42 | new hook: webpackExcludeがfalsyの場合にWarningが追加される | E-13 | ○ |
| C-43 | new hook: getEvaluatedExprがundefinedならundefinedが返る | E-08 | ○ |
| C-44 | isPure: URL識別子で静的URLの場合にtrueが返る | E-15 | ○ |
| C-45 | isPure: callee.typeがIdentifierでない場合にundefinedが返る | E-15 | ○ |
| C-46 | isPure: calleeInfoがnullの場合にundefinedが返る | E-15 | ○ |
| C-47 | isPure: calleeInfo.nameがURLでない場合にundefinedが返る | E-15 | ○ |
| C-48 | isPure: requestが取得できない場合にundefinedが返る | E-15 | ○ |
| C-49 | module.exports: URLParserPluginがエクスポートされる | E-16 | ○ |
| C-50 | new hook: 静的URL作成時にdep.locが設定される | E-11 | ○ |
| C-51 | new hook: コンテキスト依存関係作成時にdep.locが設定される | E-14 | ○ |
| C-52 | new hook: webpackIgnore=true時にConstDependencyのlocが設定される | E-10 | ○ |
| C-53 | getEvaluatedExpr: 引数が0個の場合にundefinedが返る | E-04 | ○ |
| C-54 | getEvaluatedExpr: 引数が3個以上の場合にundefinedが返る | E-04 | ○ |
| C-55 | new hook: 複数コメントエラー時にすべてWarningが追加される | E-09 | ○ |
| C-56 | new hook: ContextDependencyにmode='sync', category='url'が渡される | E-14 | ○ |

## 4) 不足情報（Unknown / Missing）
- C-02: `getUrl`関数はNode.jsの`pathToFileURL`を薄くラップしているだけであり、Windowsパスの変換動作はNode.js標準ライブラリの挙動に依存する。ソースコード内にWindows固有のパス処理は存在しない。
  - 候補：Node.js `url` モジュールのドキュメント / Node.jsの`pathToFileURL`実装
- C-03: `resource`が`undefined`の場合のエラー挙動も同様にNode.jsの`pathToFileURL`の内部挙動に依存する。ソースコード内にnullチェックは存在しない。
  - 候補：Node.js `url` モジュールのドキュメント / Node.jsのエラーハンドリング仕様

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - urlモジュールは1ファイル（URLParserPlugin.js）のみで構成されており、コードの見通しが良い
- 0: 低リスク - 主要な分岐条件はすべてソースコード上で明確に確認可能
- 1: 中リスク - `getUrl`関数のエラーケース（C-02, C-03）はNode.js標準ライブラリの挙動に依存するため、実行環境により結果が異なる可能性がある
- 0: 低リスク - webpackIgnore/webpackInclude/webpackExcludeの型バリデーションロジックはソースコード上で明確に記述されている

## 6) レビュアーチェックリスト（最小）
- [ ] getUrl関数のテストケース（UT-URL-002, UT-URL-003）について、Node.jsのpathToFileURLの実際の挙動を確認済みか
- [ ] isMetaUrl関数の5つの条件分岐（UT-URL-004〜009）がすべてソースコードの条件と対応しているか
- [ ] getEvaluatedExprのキャッシュ動作（UT-URL-011）のテスト設計が適切か（WeakMapのキャッシュ有無を検証可能か）
- [ ] new hookの主要分岐（webpackIgnore, 静的URL, 動的URL）のテストケースが網羅的か
- [ ] webpackInclude/webpackExcludeのバリデーションテストケースにおいて、falsyな値（null, false, 0等）の扱いが正しいか
- [ ] isPureフックのテストケースが全条件分岐をカバーしているか
