---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 60
  claims_with_evidence: 58
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：babel-plugin-transform-react-constant-elements 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：58 / 60、根拠なし：2
- 優先レビュー（高）
  1. **UT-RCE-046**：内部エラー発生条件の完全な検証が困難
  2. **UT-RCE-058**：深くネストされたケースの具体的な制限値が未確認

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

- E-01: `packages/babel-plugin-transform-react-constant-elements/src/index.ts` - メインプラグイン実装（262行）
- E-02: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:15-27` - declare関数とオプション検証
- E-03: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:32-44` - declares関数
- E-04: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:46-53` - isHoistingScope/getHoistingScope関数
- E-05: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:55-82` - targetScopeVisitor
- E-06: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:84-164` - immutabilityVisitor
- E-07: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:171-261` - visitor (JSXElement|JSXFragment)
- E-08: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:5-7` - Options interface定義
- E-09: `packages/babel-plugin-transform-react-constant-elements/src/index.ts:9-14` - VisitorState interface定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | プラグインが正常に初期化されること | E-02 | ○ |
| C-02 | プラグイン名がtransform-react-constant-elementsであること | E-07 (line 172) | ○ |
| C-03 | allowMutablePropsOnTagsが配列で指定された場合に正常動作 | E-02 | ○ |
| C-04 | allowMutablePropsOnTagsがnullの場合に正常動作 | E-02 (line 20-22) | ○ |
| C-05 | allowMutablePropsOnTagsがundefinedの場合に正常動作 | E-02 (line 20-22) | ○ |
| C-06 | allowMutablePropsOnTagsが配列以外でエラー | E-02 (line 23-27) | ○ |
| C-07 | allowMutablePropsOnTagsがオブジェクトでエラー | E-02 (line 20-27) | ○ |
| C-08 | thisキーワードが関数スコープで宣言と判定 | E-03 (line 34-35) | ○ |
| C-09 | argumentsキーワードが関数スコープで宣言と判定 | E-03 (line 35) | ○ |
| C-10 | superキーワードが関数スコープで宣言と判定 | E-03 (line 36) | ○ |
| C-11 | newキーワードが関数スコープで宣言と判定 | E-03 (line 37) | ○ |
| C-12 | thisがアロー関数スコープでは宣言されていないと判定 | E-03 (line 39-40) | ○ |
| C-13 | スコープに独自バインディングがある場合にtrue | E-03 (line 43) | ○ |
| C-14 | スコープにバインディングがない場合にfalse | E-03 (line 43) | ○ |
| C-15 | 関数スコープがホイスティングスコープと判定 | E-04 (line 47) | ○ |
| C-16 | ループスコープがホイスティングスコープと判定 | E-04 (line 47) | ○ |
| C-17 | プログラムスコープがホイスティングスコープと判定 | E-04 (line 47) | ○ |
| C-18 | ブロックスコープがホイスティングスコープでないと判定 | E-04 (line 47) | ○ |
| C-19 | 現在のスコープがホイスティングスコープならそのまま返却 | E-04 (line 50-52) | ○ |
| C-20 | ネストされたスコープから親のホイスティングスコープ取得 | E-04 (line 51) | ○ |
| C-21 | 内部関数で宣言された識別子がホイスティングに影響しない | E-05 (line 60-62) | ○ |
| C-22 | jsxScopeで宣言された識別子でtargetScope更新 | E-05 (line 67-80) | ○ |
| C-23 | 既存のtargetScopeに到達した場合に早期リターン | E-05 (line 69-70) | ○ |
| C-24 | JSXClosingElementがスキップ | E-06 (line 95-98) | ○ |
| C-25 | ref属性でisImmutableがfalse | E-06 (line 100-107) | ○ |
| C-26 | JSXIdentifierが正常に処理（早期リターン） | E-06 (line 111) | ○ |
| C-27 | JSXMemberExpressionが正常に処理 | E-06 (line 112) | ○ |
| C-28 | JSXNamespacedNameが正常に処理 | E-06 (line 113) | ○ |
| C-29 | 不変値が正常に処理 | E-06 (line 114) | ○ |
| C-30 | 定数バインディングを持つ識別子が正常に処理 | E-06 (line 120-123) | ○ |
| C-31 | mutablePropsAllowed=trueで関数式がスキップ | E-06 (line 127-132) | ○ |
| C-32 | 純粋でない式でisImmutableがfalse | E-06 (line 134-137) | ○ |
| C-33 | 評価結果がnullの場合にスキップ | E-06 (line 147-149) | ○ |
| C-34 | 評価結果がプリミティブ値の場合にスキップ | E-06 (line 150) | ○ |
| C-35 | 評価結果がオブジェクトでstop（mutablePropsAllowed=false） | E-06 (line 147-155, 162) | ○ |
| C-36 | 評価結果がオブジェクトでもmutablePropsAllowed=trueならスキップ | E-06 (line 148) | ○ |
| C-37 | deopt理由が識別子の場合に処理継続 | E-06 (line 156-160) | ○ |
| C-38 | 既にホイストされた要素がスキップ | E-07 (line 176) | ○ |
| C-39 | JSXElementの名前が正しく取得 | E-07 (line 179-180) | ○ |
| C-40 | JSXFragmentの場合にnameがpath.node | E-07 (line 197-199) | ○ |
| C-41 | JSXMemberExpressionの最後のセグメント取得 | E-07 (line 188-193) | ○ |
| C-42 | allowMutablePropsOnTagsに含まれるタグでmutablePropsAllowed=true | E-07 (line 185-196) | ○ |
| C-43 | 親JSX要素がホイスト済みの場合にそのスコープ使用 | E-07 (line 205-211) | ○ |
| C-44 | isImmutableがfalseで処理中断 | E-07 (line 223) | ○ |
| C-45 | ホイスティングの利点がない場合に処理中断 | E-07 (line 227-228) | ○ |
| C-46 | targetScopeがjsxScopeの祖先でない場合にエラー | E-07 (line 231-239) | △ |
| C-47 | 要素がホイストされた場合にユニークID生成 | E-07 (line 241) | ○ |
| C-48 | ホイストされた要素がキャッシュパターンで置換 | E-07 (line 246-249) | ○ |
| C-49 | 親がJSXElementの場合にJSXExpressionContainerでラップ | E-07 (line 250-256) | ○ |
| C-50 | 親がJSXAttributeの場合にJSXExpressionContainerでラップ | E-07 (line 252) | ○ |
| C-51 | 親がJSXFragmentの場合にJSXExpressionContainerでラップ | E-07 (line 253) | ○ |
| C-52 | 定数のみを含むJSX要素がホイスト | E-07 | ○ |
| C-53 | 変数参照を含むJSX要素がその変数のスコープにホイスト | E-05, E-07 | ○ |
| C-54 | ループ内のJSX要素がループ外にホイスト | E-04, E-07 | ○ |
| C-55 | ネストされたJSX要素が個別にホイスト | E-07 | ○ |
| C-56 | 空のJSX要素が正しくホイスト | E-07 | ○ |
| C-57 | 自己終了タグのJSX要素が正しくホイスト | E-07 | ○ |
| C-58 | 深くネストされたJSX要素が正しく処理 | E-07 | △ |
| C-59 | HTML要素（小文字）が正しくホイスト | E-07 | ○ |
| C-60 | コンポーネント（大文字開始）が正しくホイスト | E-07 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-46（内部エラー検出）**: このエラーパスに到達する条件が実際のコードベースで発生するかの検証が困難。理論上はtargetScopeがjsxScopeの祖先でない場合に発生するが、通常の使用では発生しないはず。
  - 候補：Babelの内部実装の変更 / 不正なAST入力 / プラグインの誤用
- **C-58（深くネストされたJSX）**: 具体的なネスト深度の制限や性能への影響についてはソースコードからは確認できない。
  - 候補：パフォーマンステスト / スタックオーバーフローテスト / 実際のユースケース調査

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 大部分のテストケースはソースコードの直接的な実装に基づいており、根拠が明確
- **1（中リスク）**: C-46のエラーパスのテストは実行時に発生させることが困難な可能性がある
- **0（低リスク）**: allowMutablePropsOnTagsオプションの検証は明確なエラーメッセージが定義されている
- **0（低リスク）**: ホイスティングロジックの各分岐はコード構造から明確に特定可能

## 6) レビュアーチェックリスト（最小）
- [ ] 各テストケースがソースコードの対応する関数・メソッドをカバーしているか確認
- [ ] declares関数の特殊識別子（this, arguments, super, new）の処理が網羅されているか確認
- [ ] immutabilityVisitorの各分岐条件（ref属性、定数バインディング、純粋性など）が網羅されているか確認
- [ ] ホイスティングスコープ判定（関数、ループ、プログラム）のテストが含まれているか確認
- [ ] allowMutablePropsOnTagsオプションの正常系・異常系が含まれているか確認
- [ ] JSXElement/JSXFragmentの両方のケースがカバーされているか確認
- [ ] 境界値テスト（空要素、自己終了タグ、深いネスト）が含まれているか確認
- [ ] C-46（内部エラー）のテスト実現可能性を検討
