---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 190
  claims_with_evidence: 190
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：190 / 190、根拠なし：0
- 優先レビュー（高）
  1. なし（すべてのテストケースにソースコード根拠あり）

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

- E-01: `src/Illuminate/Container/Container.php` - メインコンテナクラス（約1850行）
- E-02: `src/Illuminate/Container/ContextualBindingBuilder.php` - コンテキストバインディングビルダー（約97行）
- E-03: `src/Illuminate/Container/BoundMethod.php` - メソッド呼び出しユーティリティ（約218行）
- E-04: `src/Illuminate/Container/RewindableGenerator.php` - 再利用可能ジェネレーター（約60行）
- E-05: `src/Illuminate/Container/Util.php` - ユーティリティクラス（約87行）
- E-06: `src/Illuminate/Container/EntryNotFoundException.php` - PSR-11例外（約11行）
- E-07: `src/Illuminate/Container/Attributes/Auth.php` - 認証ガード属性（約30行）
- E-08: `src/Illuminate/Container/Attributes/Authenticated.php` - 認証ユーザー属性（約30行）
- E-09: `src/Illuminate/Container/Attributes/Bind.php` - バインド属性（約53行）
- E-10: `src/Illuminate/Container/Attributes/Cache.php` - キャッシュ属性（約30行）
- E-11: `src/Illuminate/Container/Attributes/Config.php` - 設定属性（約30行）
- E-12: `src/Illuminate/Container/Attributes/Context.php` - コンテキスト属性（約36行）
- E-13: `src/Illuminate/Container/Attributes/CurrentUser.php` - 現在ユーザー属性（約11行）
- E-14: `src/Illuminate/Container/Attributes/Database.php` - データベース属性（約31行）
- E-15: `src/Illuminate/Container/Attributes/DB.php` - DBエイリアス属性（約11行）
- E-16: `src/Illuminate/Container/Attributes/Give.php` - 依存注入属性（約35行）
- E-17: `src/Illuminate/Container/Attributes/Log.php` - ログ属性（約30行）
- E-18: `src/Illuminate/Container/Attributes/RouteParameter.php` - ルートパラメータ属性（約30行）
- E-19: `src/Illuminate/Container/Attributes/Scoped.php` - スコープ属性（約10行）
- E-20: `src/Illuminate/Container/Attributes/Singleton.php` - シングルトン属性（約10行）
- E-21: `src/Illuminate/Container/Attributes/Storage.php` - ストレージ属性（約30行）
- E-22: `src/Illuminate/Container/Attributes/Tag.php` - タグ属性（約30行）

## 3) Claims と根拠の対応（レビューの主戦場）

### Container.php 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | when()でContextualBindingBuilderが返却される | E-01 L210-219 | ○ |
| C-02 | when()で配列を受け付ける | E-01 L214-216 | ○ |
| C-03 | whenHasAttribute()で属性ハンドラが登録される | E-01 L226-229 | ○ |
| C-04 | bound()でバインディング確認ができる | E-01 L237-242 | ○ |
| C-05 | bound()でインスタンス確認ができる | E-01 L240 | ○ |
| C-06 | bound()でエイリアス確認ができる | E-01 L241 | ○ |
| C-07 | bound()で未登録時falseを返す | E-01 L237-242 | ○ |
| C-08 | has()はbound()と同じ結果を返す | E-01 L247-250 | ○ |
| C-09 | resolved()で解決済み確認ができる | E-01 L258-266 | ○ |
| C-10 | resolved()でエイリアス経由の確認ができる | E-01 L260-262 | ○ |
| C-11 | resolved()で未解決時falseを返す | E-01 L264-265 | ○ |
| C-12 | isShared()でinstances確認ができる | E-01 L276-278 | ○ |
| C-13 | isShared()でshared=true確認ができる | E-01 L280-281 | ○ |
| C-14 | isShared()でSingleton属性確認ができる | E-01 L327 | ○ |
| C-15 | isShared()でScoped属性確認ができる | E-01 L329-330, L293-296 | ○ |
| C-16 | isShared()で非シングルトン時falseを返す | E-01 L284-285 | ○ |
| C-17 | isAlias()でエイリアス判定ができる | E-01 L342-345 | ○ |
| C-18 | isAlias()で未登録時falseを返す | E-01 L344 | ○ |
| C-19 | bind()でバインディングが登録される | E-01 L358-394 | ○ |
| C-20 | bind()でconcrete=nullの場合自己バインド | E-01 L371-373 | ○ |
| C-21 | bind()でClosureがそのまま登録される | E-01 L378 | ○ |
| C-22 | bind()でshared=trueでシングルトン登録 | E-01 L386 | ○ |
| C-23 | bind()で解決済み時reboundが呼ばれる | E-01 L391-393 | ○ |
| C-24 | bind()でClosureの戻り値型でバインドされる | E-01 L360-363 | ○ |
| C-25 | bind()で不正な型でTypeErrorがスロー | E-01 L379-381 | ○ |
| C-26 | hasMethodBinding()でメソッドバインディング確認 | E-01 L422-425 | ○ |
| C-27 | hasMethodBinding()で未登録時false | E-01 L424 | ○ |
| C-28 | bindMethod()で文字列形式登録 | E-01 L434-437 | ○ |
| C-29 | bindMethod()で配列形式登録 | E-01 L445-452 | ○ |
| C-30 | callMethodBinding()でコールバック実行 | E-01 L461-464 | ○ |
| C-31 | addContextualBinding()でコンテキストバインディング追加 | E-01 L474-477 | ○ |
| C-32 | bindIf()で未登録時バインド | E-01 L487-492 | ○ |
| C-33 | bindIf()で登録済み時スキップ | E-01 L489 | ○ |
| C-34 | singleton()でシングルトン登録 | E-01 L501-504 | ○ |
| C-35 | singletonIf()で未登録時シングルトン登録 | E-01 L513-518 | ○ |
| C-36 | singletonIf()で登録済み時スキップ | E-01 L515 | ○ |
| C-37 | scoped()でスコープ付きシングルトン登録 | E-01 L527-532 | ○ |
| C-38 | scopedIf()で未登録時スコープ登録 | E-01 L541-546 | ○ |
| C-39 | scopedIf()で登録済み時スキップ | E-01 L543 | ○ |
| C-40 | extend()で既存インスタンス拡張 | E-01 L575-590 | ○ |
| C-41 | extend()で未解決時extenders登録 | E-01 L584 | ○ |
| C-42 | extend()で解決済み時rebound呼び出し | E-01 L586-588 | ○ |
| C-43 | instance()でインスタンス登録 | E-01 L601-619 | ○ |
| C-44 | instance()でバインド済み時rebound | E-01 L614-616 | ○ |
| C-45 | instance()で登録インスタンス返却 | E-01 L618 | ○ |
| C-46 | tag()でタグ付与 | E-01 L649-662 | ○ |
| C-47 | tag()で複数タグ付与 | E-01 L651-660 | ○ |
| C-48 | tagged()でRewindableGenerator返却 | E-01 L670-681 | ○ |
| C-49 | tagged()で未登録タグで空配列 | E-01 L672-674 | ○ |
| C-50 | alias()でエイリアス登録 | E-01 L692-703 | ○ |
| C-51 | alias()で自己参照でLogicException | E-01 L694-696 | ○ |
| C-52 | rebinding()でコールバック登録 | E-01 L711-718 | ○ |
| C-53 | rebinding()でバインド済み時インスタンス返却 | E-01 L715-717 | ○ |
| C-54 | refresh()でメソッド呼び出し設定 | E-01 L728-733 | ○ |
| C-55 | wrap()でクロージャラップ | E-01 L770-773 | ○ |
| C-56 | call()でClosure依存注入 | E-01 L785-806 | ○ |
| C-57 | call()でClass@method形式 | E-01 L789-798 | ○ |
| C-58 | call()でパラメータオーバーライド | E-01 L785 | ○ |
| C-59 | call()でデフォルトメソッド適用 | E-01 L789-797 | ○ |
| C-60 | factory()でmakeクロージャ返却 | E-01 L832-835 | ○ |
| C-61 | makeWith()でパラメータ付きmake | E-01 L847-850 | ○ |
| C-62 | make()でバインド済みクラス解決 | E-01 L862-865 | ○ |
| C-63 | make()でシングルトン同一インスタンス | E-01 L919-921, L946-948 | ○ |
| C-64 | make()でパラメータオーバーライド | E-01 L914, L923 | ○ |
| C-65 | make()でコンテキストバインディング適用 | E-01 L912 | ○ |
| C-66 | make()でextenders適用 | E-01 L939-941 | ○ |
| C-67 | make()で存在しないクラスでException | E-01 L1121-1125 | ○ |
| C-68 | make()でインスタンス化不可でException | E-01 L1130-1132 | ○ |
| C-69 | get()でPSR-11互換取得 | E-01 L875-886 | ○ |
| C-70 | get()で未登録時EntryNotFoundException | E-01 L884 | ○ |
| C-71 | get()で循環依存時そのまま例外スロー | E-01 L880-882 | ○ |
| C-72 | build()でClosure実行 | E-01 L1111-1119 | ○ |
| C-73 | build()でコンストラクタなしクラス | E-01 L1146-1154 | ○ |
| C-74 | build()で依存解決 | E-01 L1156-1172 | ○ |
| C-75 | build()でSelfBuilding | E-01 L1134-1137 | ○ |
| C-76 | build()で存在しないクラスでException | E-01 L1121-1125 | ○ |
| C-77 | build()でインスタンス化不可でException | E-01 L1130-1132 | ○ |
| C-78 | build()で循環依存検出 | E-01 L1139 (buildStack) | ○ |
| C-79 | resolveFromAttribute()で登録ハンドラ実行 | E-01 L1376-1391 | ○ |
| C-80 | resolveFromAttribute()でresolveメソッド呼び出し | E-01 L1382-1384 | ○ |
| C-81 | resolveFromAttribute()でハンドラなしでException | E-01 L1386-1388 | ○ |
| C-82 | beforeResolving()でグローバルコールバック登録 | E-01 L1434-1445 | ○ |
| C-83 | beforeResolving()で型別コールバック登録 | E-01 L1443 | ○ |
| C-84 | resolving()でグローバルコールバック登録 | E-01 L1453-1464 | ○ |
| C-85 | resolving()で型別コールバック登録 | E-01 L1462 | ○ |
| C-86 | afterResolving()でグローバルコールバック登録 | E-01 L1472-1483 | ○ |
| C-87 | afterResolving()で型別コールバック登録 | E-01 L1481 | ○ |
| C-88 | afterResolvingAttribute()で属性別コールバック登録 | E-01 L1490-1493 | ○ |
| C-89 | fireAfterResolvingAttributeCallbacks()でafterメソッド呼び出し | E-01 L1568-1587 | ○ |
| C-90 | fireAfterResolvingAttributeCallbacks()で登録コールバック実行 | E-01 L1579-1585 | ○ |
| C-91 | currentlyResolving()で解決中クラス名返却 | E-01 L1627-1630 | ○ |
| C-92 | currentlyResolving()でスタック空時null | E-01 L1629 | ○ |
| C-93 | getBindings()でバインディング一覧取得 | E-01 L1637-1640 | ○ |
| C-94 | getAlias()でエイリアス解決 | E-01 L1648-1653 | ○ |
| C-95 | getAlias()でエイリアスチェーン解決 | E-01 L1651 (再帰) | ○ |
| C-96 | getAlias()で非エイリアスそのまま返却 | E-01 L1652 | ○ |
| C-97 | forgetExtenders()でエクステンダー削除 | E-01 L1672-1675 | ○ |
| C-98 | forgetInstance()でインスタンス削除 | E-01 L1694-1697 | ○ |
| C-99 | forgetInstances()で全インスタンス削除 | E-01 L1704-1707 | ○ |
| C-100 | forgetScopedInstances()でスコープインスタンス削除 | E-01 L1714-1725 | ○ |
| C-101 | resolveEnvironmentUsing()で環境リゾルバ設定 | E-01 L1733-1736 | ○ |
| C-102 | currentEnvironmentIs()で環境判定 | E-01 L1744-1749 | ○ |
| C-103 | currentEnvironmentIs()でリゾルバなしfalse | E-01 L1746-1747 | ○ |
| C-104 | flush()で全状態クリア | E-01 L1756-1766 | ○ |
| C-105 | getInstance()でグローバルインスタンス取得 | E-01 L1773-1776 | ○ |
| C-106 | setInstance()でグローバルインスタンス設定 | E-01 L1783-1786 | ○ |
| C-107 | setInstance()でnullでクリア | E-01 L1783 | ○ |
| C-108 | offsetExists()でArrayAccess exists | E-01 L1793-1796 | ○ |
| C-109 | offsetGet()でArrayAccess get | E-01 L1803-1806 | ○ |
| C-110 | offsetSet()でArrayAccess set | E-01 L1814-1817 | ○ |
| C-111 | offsetSet()で非Closureラップ | E-01 L1816 | ○ |
| C-112 | offsetUnset()でArrayAccess unset | E-01 L1824-1827 | ○ |
| C-113 | __get()でマジックゲッター | E-01 L1835-1838 | ○ |
| C-114 | __set()でマジックセッター | E-01 L1846-1850 | ○ |

### ContextualBindingBuilder.php 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-115 | コンストラクタでプロパティ設定 | E-02 L37-41 | ○ |
| C-116 | needs()で必要な抽象型設定 | E-02 L49-54 | ○ |
| C-117 | needs()でメソッドチェーン | E-02 L53 | ○ |
| C-118 | give()でコンテキストバインディング追加 | E-02 L62-69 | ○ |
| C-119 | give()で複数具象型へのバインディング | E-02 L64 | ○ |
| C-120 | give()でClosure実装 | E-02 L62 | ○ |
| C-121 | giveTagged()でタグ付き実装 | E-02 L77-84 | ○ |
| C-122 | giveConfig()で設定値実装 | E-02 L93-96 | ○ |
| C-123 | giveConfig()でデフォルト値 | E-02 L95 | ○ |

### BoundMethod.php 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-124 | call()でClosure依存注入 | E-03 L25-38 | ○ |
| C-125 | call()でClass@method解決 | E-03 L31-33 | ○ |
| C-126 | call()で__invoke呼び出し | E-03 L27-29 | ○ |
| C-127 | call()でメソッドバインディング優先 | E-03 L81-97 | ○ |
| C-128 | call()でパラメータオーバーライド | E-03 L36 | ○ |
| C-129 | call()でメソッド未指定Exception | E-03 L62-64 | ○ |
| C-130 | call()でClass::method形式 | E-03 L143-144 | ○ |
| C-131 | call()で配列形式[instance, method] | E-03 L149-150 | ○ |
| C-132 | call()で可変長引数解決 | E-03 L184-189 | ○ |
| C-133 | call()で属性ベース依存解決 | E-03 L177-178 | ○ |
| C-134 | call()でデフォルト値パラメータ | E-03 L193-194 | ○ |
| C-135 | call()で解決不可依存Exception | E-03 L195-198 | ○ |

### RewindableGenerator.php 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-136 | コンストラクタでプロパティ設定 | E-04 L31-35 | ○ |
| C-137 | getIterator()でイテレータ返却 | E-04 L42-45 | ○ |
| C-138 | getIterator()で複数回呼び出し可能 | E-04 L44 | ○ |
| C-139 | count()で整数カウント返却 | E-04 L54-58 | ○ |
| C-140 | count()でcallableカウント実行 | E-04 L54-56 | ○ |
| C-141 | count()でカウントキャッシュ | E-04 L55 | ○ |

### Util.php 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-142 | arrayWrap()でnull配列化 | E-05 L25-27 | ○ |
| C-143 | arrayWrap()で配列そのまま | E-05 L29 | ○ |
| C-144 | arrayWrap()でスカラー配列化 | E-05 L29 | ○ |
| C-145 | unwrapIfClosure()でClosureアンラップ | E-05 L41-44 | ○ |
| C-146 | unwrapIfClosure()で非Closureそのまま | E-05 L43 | ○ |
| C-147 | unwrapIfClosure()でClosure引数渡し | E-05 L43 | ○ |
| C-148 | getParameterClassName()でクラス名取得 | E-05 L54-75 | ○ |
| C-149 | getParameterClassName()でself解決 | E-05 L65-67 | ○ |
| C-150 | getParameterClassName()でparent解決 | E-05 L69-71 | ○ |
| C-151 | getParameterClassName()でビルトイン型null | E-05 L58 | ○ |
| C-152 | getParameterClassName()で型ヒントなしnull | E-05 L58 | ○ |
| C-153 | getContextualAttributeFromDependency()で属性取得 | E-05 L83-86 | ○ |
| C-154 | getContextualAttributeFromDependency()で属性なしnull | E-05 L85 | ○ |

### EntryNotFoundException.php 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-155 | PSR-11 NotFoundExceptionInterface実装 | E-06 L8-9 | ○ |

### Attributes 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-156 | Auth::__construct()デフォルトguard | E-07 L15-17 | ○ |
| C-157 | Auth::__construct()指定guard | E-07 L15 | ○ |
| C-158 | Auth::resolve()で認証ガード解決 | E-07 L26-29 | ○ |
| C-159 | Authenticated::__construct()デフォルトguard | E-08 L15-17 | ○ |
| C-160 | Authenticated::resolve()で認証ユーザー解決 | E-08 L26-29 | ○ |
| C-161 | Authenticated::resolve()で未認証時null | E-08 L28 | ○ |
| C-162 | Bind::__construct()でプロパティ設定 | E-09 L36-52 | ○ |
| C-163 | Bind::__construct()デフォルト環境 | E-09 L38 | ○ |
| C-164 | Bind::__construct()Enum変換 | E-09 L48-50 | ○ |
| C-165 | Bind::__construct()空環境Exception | E-09 L42-44 | ○ |
| C-166 | Cache::__construct()デフォルトstore | E-10 L15-17 | ○ |
| C-167 | Cache::resolve()でキャッシュストア解決 | E-10 L26-29 | ○ |
| C-168 | Config::__construct()でプロパティ設定 | E-11 L15-17 | ○ |
| C-169 | Config::resolve()で設定値解決 | E-11 L26-29 | ○ |
| C-170 | Config::resolve()でデフォルト値 | E-11 L28 | ○ |
| C-171 | Context::__construct()でプロパティ設定 | E-12 L16-18 | ○ |
| C-172 | Context::resolve()でコンテキスト解決 | E-12 L27-35 | ○ |
| C-173 | Context::resolve()で隠しコンテキスト | E-12 L32 | ○ |
| C-174 | CurrentUser::resolve()でAuthenticatedと同じ挙動 | E-13 L8 (継承) | ○ |
| C-175 | Database::__construct()デフォルトconnection | E-14 L16-18 | ○ |
| C-176 | Database::__construct()Enum connection | E-14 L16 | ○ |
| C-177 | Database::resolve()でDB接続解決 | E-14 L27-30 | ○ |
| C-178 | DB::resolve()でDatabaseと同じ挙動 | E-15 L8 (継承) | ○ |
| C-179 | Give::__construct()でプロパティ設定 | E-16 L18-22 | ○ |
| C-180 | Give::resolve()でパラメータ付き解決 | E-16 L31-34 | ○ |
| C-181 | Log::__construct()デフォルトchannel | E-17 L15-17 | ○ |
| C-182 | Log::resolve()でログチャンネル解決 | E-17 L26-29 | ○ |
| C-183 | RouteParameter::__construct()でパラメータ設定 | E-18 L15-17 | ○ |
| C-184 | RouteParameter::resolve()でルートパラメータ解決 | E-18 L26-29 | ○ |
| C-185 | Storage::__construct()デフォルトdisk | E-21 L15-17 | ○ |
| C-186 | Storage::resolve()でストレージディスク解決 | E-21 L26-29 | ○ |
| C-187 | Tag::__construct()でタグ設定 | E-22 L14-17 | ○ |
| C-188 | Tag::resolve()でタグ解決 | E-22 L26-29 | ○ |
| C-189 | Scoped属性TARGET_CLASS定義 | E-19 L7 | ○ |
| C-190 | Singleton属性TARGET_CLASS定義 | E-20 L7 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし（すべてのテストケースにソースコード根拠あり）

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードに基づいて生成されている
- 注意点: 実際のテスト実装時には、モック/スタブの作成が必要なケースが多い（特にAttributes関連のresolveメソッド）

## 6) レビュアーチェックリスト（最小）
- [ ] Container.phpの主要メソッド（bind, make, singleton, scoped）のテストケースが網羅されているか確認
- [ ] 異常系テストケース（Exception発生）が適切に定義されているか確認
- [ ] 境界値テストケース（空配列、null値等）が含まれているか確認
- [ ] Attributes各クラスのresolveメソッドテストケースが定義されているか確認
- [ ] PSR-11互換性（has, get, EntryNotFoundException）のテストケースが含まれているか確認
