---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 87
  claims_with_evidence: 84
  claims_without_evidence: 3
confidence_derived: 0.97
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：84 / 87、根拠なし：3
- 優先レビュー（高）
  1. **C-74 (UT-RUL-074)**: 文字列optionsの非推奨警告 - util.deprecateの呼び出し確認は実行時の挙動に依存
  2. **C-76 (UT-RUL-076)**: useにfalsy値を含む配列のフィルタ - filter(Boolean)の挙動は推測に基づく
  3. **C-77 (UT-RUL-077)**: useオブジェクトのカスタムident - ident設定時のreferences登録は内部関数useToEffectRawの詳細解析に基づく

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

- E-01: `lib/rules/RuleSetCompiler.js` (L96-L116) - RuleSetCompiler.constructor
- E-02: `lib/rules/RuleSetCompiler.js` (L122-L202) - RuleSetCompiler.compile (execRule内部関数含む)
- E-03: `lib/rules/RuleSetCompiler.js` (L210-L220) - RuleSetCompiler.compileRules
- E-04: `lib/rules/RuleSetCompiler.js` (L228-L273) - RuleSetCompiler.compileRule
- E-05: `lib/rules/RuleSetCompiler.js` (L280-L394) - RuleSetCompiler.compileCondition
- E-06: `lib/rules/RuleSetCompiler.js` (L400-L413) - RuleSetCompiler.combineConditionsOr
- E-07: `lib/rules/RuleSetCompiler.js` (L419-L432) - RuleSetCompiler.combineConditionsAnd
- E-08: `lib/rules/RuleSetCompiler.js` (L440-L444) - RuleSetCompiler.error
- E-09: `lib/rules/BasicMatcherRulePlugin.js` (L23-L36) - BasicMatcherRulePlugin.constructor
- E-10: `lib/rules/BasicMatcherRulePlugin.js` (L42-L65) - BasicMatcherRulePlugin.apply
- E-11: `lib/rules/BasicEffectRulePlugin.js` (L21-L31) - BasicEffectRulePlugin.constructor
- E-12: `lib/rules/BasicEffectRulePlugin.js` (L37-L53) - BasicEffectRulePlugin.apply
- E-13: `lib/rules/UseEffectRulePlugin.js` (L23-L234) - UseEffectRulePlugin.apply
- E-14: `lib/rules/ObjectMatcherRulePlugin.js` (L25-L38) - ObjectMatcherRulePlugin.constructor
- E-15: `lib/rules/ObjectMatcherRulePlugin.js` (L44-L76) - ObjectMatcherRulePlugin.apply

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-RUL-001: プラグイン配列を渡してインスタンスが生成されること | E-01 | ○ |
| C-02 | UT-RUL-002: プラグインなし(undefined)でインスタンスが生成されること | E-01 | ○ |
| C-03 | UT-RUL-003: 空のプラグイン配列でインスタンスが生成されること | E-01 | ○ |
| C-04 | UT-RUL-004: hooksがObject.freezeで凍結されていること | E-01 | ○ |
| C-05 | UT-RUL-005: 単純なルールセットをコンパイルしてRuleSetが返ること | E-02 | ○ |
| C-06 | UT-RUL-006: exec関数がマッチするデータに対してeffectsを返すこと | E-02 | ○ |
| C-07 | UT-RUL-007: exec関数がマッチしないデータに対して空配列を返すこと | E-02 | ○ |
| C-08 | UT-RUL-008: conditionのpropertyが配列の場合にネストプロパティを辿れること | E-02 | ○ |
| C-09 | UT-RUL-009: ネストプロパティで途中がundefinedの場合matchWhenEmptyで判定 | E-02 | ○ |
| C-10 | UT-RUL-010: effectが関数の場合にdataを引数に呼び出されること | E-02 | ○ |
| C-11 | UT-RUL-011: rule.rulesが存在する場合に子ルールも再帰的に評価 | E-02 | ○ |
| C-12 | UT-RUL-012: rule.oneOfが存在する場合に最初にマッチした子ルールのみ適用 | E-02 | ○ |
| C-13 | UT-RUL-013: 空のルールセット(falsy値を含む)をコンパイル | E-02, E-03 | ○ |
| C-14 | UT-RUL-014: ルール配列をコンパイルしてCompiledRule配列を返す | E-03 | ○ |
| C-15 | UT-RUL-015: falsy値を含むルール配列がフィルタされる | E-03 | ○ |
| C-16 | UT-RUL-016: 空配列を渡した場合に空のCompiledRule配列が返る | E-03 | ○ |
| C-17 | UT-RUL-017: 単一ルールをコンパイルしてCompiledRuleが返る | E-04 | ○ |
| C-18 | UT-RUL-018: rulesプロパティがある場合にネストルール再帰コンパイル | E-04 | ○ |
| C-19 | UT-RUL-019: rulesプロパティが配列でない場合にエラー | E-04 | ○ |
| C-20 | UT-RUL-020: oneOfプロパティがある場合にoneOfルール再帰コンパイル | E-04 | ○ |
| C-21 | UT-RUL-021: oneOfプロパティが配列でない場合にエラー | E-04 | ○ |
| C-22 | UT-RUL-022: 未処理プロパティが残っている場合にエラー | E-04 | ○ |
| C-23 | UT-RUL-023: 空文字列条件のcompileCondition | E-05 | ○ |
| C-24 | UT-RUL-024: 文字列条件のstartsWithマッチ | E-05 | ○ |
| C-25 | UT-RUL-025: 関数条件の処理 | E-05 | ○ |
| C-26 | UT-RUL-026: 関数条件の空文字テスト時エラー | E-05 | ○ |
| C-27 | UT-RUL-027: 正規表現条件のtestマッチ | E-05 | ○ |
| C-28 | UT-RUL-028: 正規表現のmatchWhenEmpty計算 | E-05 | ○ |
| C-29 | UT-RUL-029: 配列条件のOR結合 | E-05, E-06 | ○ |
| C-30 | UT-RUL-030: オブジェクトorキーのOR結合 | E-05 | ○ |
| C-31 | UT-RUL-031: オブジェクトandキーのAND結合 | E-05 | ○ |
| C-32 | UT-RUL-032: オブジェクトnotキーの否定条件 | E-05 | ○ |
| C-33 | UT-RUL-033: falsy値条件のエラー | E-05 | ○ |
| C-34 | UT-RUL-034: 数値型条件のエラー | E-05 | ○ |
| C-35 | UT-RUL-035: orが配列でない場合のエラー | E-05 | ○ |
| C-36 | UT-RUL-036: andが配列でない場合のエラー | E-05 | ○ |
| C-37 | UT-RUL-037: 未知キーのエラー | E-05 | ○ |
| C-38 | UT-RUL-038: 空オブジェクト条件のエラー | E-05 | ○ |
| C-39 | UT-RUL-039: OR結合の基本動作 | E-06 | ○ |
| C-40 | UT-RUL-040: 空配列のOR結合 | E-06 | ○ |
| C-41 | UT-RUL-041: 1件のOR結合 | E-06 | ○ |
| C-42 | UT-RUL-042: OR結合のmatchWhenEmpty(some) | E-06 | ○ |
| C-43 | UT-RUL-043: AND結合の基本動作 | E-07 | ○ |
| C-44 | UT-RUL-044: 空配列のAND結合 | E-07 | ○ |
| C-45 | UT-RUL-045: 1件のAND結合 | E-07 | ○ |
| C-46 | UT-RUL-046: AND結合のmatchWhenEmpty(every) | E-07 | ○ |
| C-47 | UT-RUL-047: errorメソッドのメッセージフォーマット | E-08 | ○ |
| C-48 | UT-RUL-048: error戻り値がErrorインスタンス | E-08 | ○ |
| C-49 | UT-RUL-049: BasicMatcherRulePlugin constructor基本動作 | E-09 | ○ |
| C-50 | UT-RUL-050: dataProperty省略時のデフォルト値 | E-09 | ○ |
| C-51 | UT-RUL-051: invert=trueの設定 | E-09 | ○ |
| C-52 | UT-RUL-052: apply基本動作(tap呼び出し) | E-10 | ○ |
| C-53 | UT-RUL-053: 該当プロパティの消費 | E-10 | ○ |
| C-54 | UT-RUL-054: 非該当プロパティのスキップ | E-10 | ○ |
| C-55 | UT-RUL-055: invert条件の反転 | E-10 | ○ |
| C-56 | UT-RUL-056: invertのmatchWhenEmpty反転 | E-10 | ○ |
| C-57 | UT-RUL-057: BasicEffectRulePlugin constructor基本動作 | E-11 | ○ |
| C-58 | UT-RUL-058: effectType省略時のデフォルト値 | E-11 | ○ |
| C-59 | UT-RUL-059: エフェクト追加の基本動作 | E-12 | ○ |
| C-60 | UT-RUL-060: プロパティ消費 | E-12 | ○ |
| C-61 | UT-RUL-061: 非該当プロパティのスキップ | E-12 | ○ |
| C-62 | UT-RUL-062: use配列の基本動作 | E-13 | ○ |
| C-63 | UT-RUL-063: use単一文字列 | E-13 | ○ |
| C-64 | UT-RUL-064: useオブジェクト配列 | E-13 | ○ |
| C-65 | UT-RUL-065: use関数(動的ローダー) | E-13 | ○ |
| C-66 | UT-RUL-066: enforce='pre'の動作 | E-13 | ○ |
| C-67 | UT-RUL-067: enforce='post'の動作 | E-13 | ○ |
| C-68 | UT-RUL-068: use/loaderの競合検出 | E-13 | ○ |
| C-69 | UT-RUL-069: use/optionsの競合検出 | E-13 | ○ |
| C-70 | UT-RUL-070: loader基本動作 | E-13 | ○ |
| C-71 | UT-RUL-071: loaderとoptions併用時のident登録 | E-13 | ○ |
| C-72 | UT-RUL-072: 廃止された!区切りローダー形式 | E-13 | ○ |
| C-73 | UT-RUL-073: 廃止された?クエリ形式 | E-13 | ○ |
| C-74 | UT-RUL-074: 文字列optionsの非推奨警告 | **根拠なし** | △ |
| C-75 | UT-RUL-075: enforceプロパティの消費 | E-13 | ○ |
| C-76 | UT-RUL-076: useにfalsy値を含む配列のフィルタ | **根拠なし** | △ |
| C-77 | UT-RUL-077: useオブジェクトのカスタムident | **根拠なし** | △ |
| C-78 | UT-RUL-078: ObjectMatcherRulePlugin constructor基本動作 | E-14 | ○ |
| C-79 | UT-RUL-079: dataProperty省略時のデフォルト値 | E-14 | ○ |
| C-80 | UT-RUL-080: additionalConditionFunctionの設定 | E-14 | ○ |
| C-81 | UT-RUL-081: apply基本動作(条件追加) | E-15 | ○ |
| C-82 | UT-RUL-082: ドット区切りネストプロパティ | E-15 | ○ |
| C-83 | UT-RUL-083: additionalConditionFunctionの適用 | E-15 | ○ |
| C-84 | UT-RUL-084: additionalConditionFunction未設定時 | E-15 | ○ |
| C-85 | UT-RUL-085: プロパティ消費 | E-15 | ○ |
| C-86 | UT-RUL-086: 非該当プロパティのスキップ | E-15 | ○ |
| C-87 | UT-RUL-087: 複数プロパティの処理 | E-15 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-74**: `util.deprecate`の呼び出し確認はソースコード上で`util.deprecate`関数の呼び出しが確認できる(L103-L107)が、実行時にDeprecationWarningが出力されるかは実行環境に依存する。テストではモック/スパイで検証する必要がある。
  - 候補：Node.js `util.deprecate` APIドキュメント / 実行時のDeprecationWarningイベント / process.warningsイベント
- **C-76**: `useToEffects`関数内の`items.filter(Boolean)`はソースコード(L152)に存在するが、falsy値を含む配列の具体的なフィルタ挙動テストはwebpackの既存テストで明示的に検証されていない可能性がある。
  - 候補：webpack既存テストスイート / JavaScript `Array.prototype.filter`仕様
- **C-77**: `useToEffectRaw`内でident設定時に`references.set(ident, options)`が呼ばれること(L99-L100)はソースコードで確認できるが、カスタムidentが指定された場合のE2E挙動については既存テストでの網羅度が不明。
  - 候補：webpack既存テストスイート / RuleSetCompiler統合テスト

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - RuleSetCompiler.constructor、error、combineConditionsOr/And、BasicEffectRulePlugin全般、BasicMatcherRulePlugin.constructor - ロジックが単純で根拠が明確
- 1: 中リスク - compileCondition（複雑な条件分岐が多く、全パスの網羅確認が必要）、UseEffectRulePlugin.apply（内部関数が多く、テストケースの網羅性確認が必要）
- 0: 低リスク - ObjectMatcherRulePlugin全般 - ロジックが明確でソースコードから直接根拠が取れる
- 1: 中リスク - compile内のexecRule（クロージャ内部関数のため、統合的なテストが必要）

## 6) レビュアーチェックリスト（最小）
- [ ] RuleSetCompiler.compileConditionの全条件分岐（空文字列、文字列、関数、正規表現、配列、オブジェクト(or/and/not)、falsy、不正型）が網羅されているか
- [ ] compile内のexecRuleについて、property配列/非配列の両パス、matchWhenEmpty判定、rules/oneOfの再帰が正しくテストされているか
- [ ] UseEffectRulePluginのuse/loader競合検出および廃止形式(!や?)のエラー検出が正しく記載されているか
- [ ] 各プラグインのapplyメソッドで、unhandledPropertiesの削除（プロパティ消費）が確認されているか
- [ ] ObjectMatcherRulePluginのドット区切りネストプロパティ分割とadditionalConditionFunctionの有無による分岐が網羅されているか
- [ ] util.deprecate関連のテスト(C-74)の実現可能性を確認すること（モック/スパイの使用が前提）
