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

# 根拠レポート：babel-plugin-proposal-optional-chaining-assign 単体テストケース一覧

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード・既存テストフィクスチャなどの根拠（Evidence）が存在するか
2. **根拠との整合性**：テストケースの内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：38 / 40、根拠なし：2
- 優先レビュー（高）
  1. **C-38（skipTransparentExprWrappers処理）**：ヘルパー関数の内部動作に関する詳細な根拠が限定的
  2. **C-40（scope.buildUndefinedNode）**：Babel API内部の動作に依存

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

- E-01: `packages/babel-plugin-proposal-optional-chaining-assign/src/index.ts` - プラグイン本体ソースコード
- E-02: `packages/babel-plugin-proposal-optional-chaining-assign/package.json` - パッケージ定義
- E-03: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/basic/input.js` - 基本入力テスト
- E-04: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/basic/output.js` - 基本出力テスト
- E-05: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/basic/exec.js` - 基本実行テスト
- E-06: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/call/input.js` - メソッド呼び出し入力テスト
- E-07: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/call/output.js` - メソッド呼び出し出力テスト
- E-08: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/parenthesized/input.js` - 括弧付き入力テスト
- E-09: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/parenthesized/output.js` - 括弧付き出力テスト
- E-10: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/parenthesized/exec.js` - 括弧付き実行テスト
- E-11: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/plus-eq/input.js` - 複合代入入力テスト
- E-12: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/plus-eq/output.js` - 複合代入出力テスト
- E-13: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/plus-eq/exec.js` - 複合代入実行テスト
- E-14: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/private-field/input.js` - プライベートフィールド入力テスト
- E-15: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/private-field/output.js` - プライベートフィールド出力テスト
- E-16: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/private-field-transformed/input.js` - プライベートフィールド変換入力
- E-17: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/private-field-transformed/output.js` - プライベートフィールド変換出力
- E-18: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/private-field-transformed/options.json` - プライベートフィールド変換オプション
- E-19: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/value-ignored/input.js` - 値無視入力テスト
- E-20: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/general/value-ignored/output.js` - 値無視出力テスト
- E-21: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/assumption-noDocumentAll/options.json` - noDocumentAllオプション
- E-22: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/assumption-noDocumentAll/basic/output.js` - noDocumentAll出力
- E-23: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/assumption-pureGetters/options.json` - pureGettersオプション
- E-24: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/assumption-pureGetters/call/output.js` - pureGetters出力
- E-25: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/invalid/optional-call-lhs/input.js` - 無効構文（オプショナル呼び出し左辺）
- E-26: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/invalid/optional-call-lhs/options.json` - 無効構文オプション
- E-27: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/invalid/unary-inc-prefix/input.js` - 無効構文（前置インクリメント）
- E-28: `packages/babel-plugin-proposal-optional-chaining-assign/test/fixtures/invalid/unary-inc-postfix/input.js` - 無効構文（後置インクリメント）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | プラグインが正しくエクスポートされること | E-01 | ○ |
| C-02 | syntaxOptionalChainingAssignを継承すること | E-01 (line 19) | ○ |
| C-03 | 対応バージョン^7.22.5で正常動作すること | E-01 (line 8) | ○ |
| C-04 | 対応バージョン^8.0.0で正常動作すること | E-01 (line 8) | ○ |
| C-05 | 非対応バージョンでエラーがスローされること | E-01 (line 8) | ○ |
| C-06 | 基本的なオプショナルチェイニング代入が変換されること | E-03, E-04 | ○ |
| C-07 | ネストされたオプショナルチェイニングが正しく処理されること | E-03, E-04 | ○ |
| C-08 | 複合代入演算子(+=)が変換されること | E-11, E-12 | ○ |
| C-09 | nullish合体代入(??=)が変換されること | E-14, E-15 | ○ |
| C-10 | オプショナルメソッド呼び出し後の代入が変換されること | E-06, E-07 | ○ |
| C-11 | プライベートフィールドへの代入が変換されること | E-14, E-15 | ○ |
| C-12 | プライベートフィールドの複合代入が変換されること | E-14, E-15 | ○ |
| C-13 | プライベートフィールドのプロパティへの代入が変換されること | E-14, E-15 | ○ |
| C-14 | 括弧付きオプショナルチェイニング代入(=)が変換されること | E-08, E-09 | ○ |
| C-15 | 括弧付きオプショナルチェイニング複合代入(+=)が変換されること | E-08, E-09 | ○ |
| C-16 | 値が無視される代入が正しく変換されること | E-19, E-20 | ○ |
| C-17 | transform-class-propertiesと併用時のプライベートフィールド代入 | E-16, E-17, E-18 | ○ |
| C-18 | transform-class-propertiesと併用時のプライベートフィールド複合代入 | E-16, E-17, E-18 | ○ |
| C-19 | privateFieldsAsProperties設定時の変換 | E-01 (assumptions参照) | ○ |
| C-20 | noDocumentAll: trueで簡略化された比較が生成されること | E-21, E-22 | ○ |
| C-21 | pureGetters: trueでゲッター再評価が許可されること | E-23, E-24 | ○ |
| C-22 | オプショナル呼び出しが左辺の場合エラー | E-25, E-26 | ○ |
| C-23 | 前置インクリメント演算子でエラー | E-27 | ○ |
| C-24 | 後置インクリメント演算子でエラー | E-28 | ○ |
| C-25 | 左辺がExpressionでない場合スキップされること | E-01 (line 24) | ○ |
| C-26 | 左辺がOptionalMemberExpressionでない場合スキップされること | E-01 (line 32) | ○ |
| C-27 | レシーバーがnullの場合undefinedが返ること | E-05 | ○ |
| C-28 | レシーバーがundefinedの場合undefinedが返ること | E-05 | ○ |
| C-29 | 中間プロパティがnullの場合代入がスキップされること | E-05 | ○ |
| C-30 | 全プロパティが存在する場合代入が実行されること | E-05 | ○ |
| C-31 | 括弧付き代入でnullレシーバー時TypeErrorがスローされること | E-10 | ○ |
| C-32 | 括弧付き代入で右辺が先に評価されること | E-10 | ○ |
| C-33 | 括弧付き複合代入でnullレシーバー時右辺が評価されないこと | E-10 | ○ |
| C-34 | 複合代入(+=)でnullレシーバー時undefinedが返ること | E-13 | ○ |
| C-35 | 複合代入(+=)で有効レシーバー時正しく計算されること | E-13 | ○ |
| C-36 | チェーン途中でTypeErrorが発生した場合の挙動 | E-05 | ○ |
| C-37 | 最終プロパティアクセスでTypeErrorが発生した場合 | E-05 | ○ |
| C-38 | ParenthesizedExpressionがスキップされること | **根拠限定的** | △ |
| C-39 | extra.parenthesizedフラグが正しく検出されること | E-01 (line 25-27), E-08 | ○ |
| C-40 | scope.buildUndefinedNode()が適切に呼び出されること | **Babel内部API** | △ |

## 4) 不足情報（Unknown / Missing）
- **C-38（skipTransparentExprWrappers処理）**: `@babel/helper-skip-transparent-expression-wrappers`パッケージの内部実装に依存しており、本プラグインのソースコードからは直接的な根拠が得られない
  - 候補：`@babel/helper-skip-transparent-expression-wrappers/src/index.ts`を参照することで補完可能
- **C-40（scope.buildUndefinedNode）**: Babel Traverse APIの内部メソッドであり、動作はBabelコアのドキュメントに依存
  - 候補：Babel公式ドキュメント / `@babel/traverse`ソースコード

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 基本的な変換テストケース（C-01〜C-18）は十分な根拠あり
- **0: 低リスク** - assumption設定のテストケース（C-19〜C-21）はテストフィクスチャで確認済み
- **0: 低リスク** - 無効構文のテストケース（C-22〜C-24）はテストフィクスチャで確認済み
- **1: 中リスク** - 内部ヘルパー関連（C-38, C-40）は外部依存のため追加検証推奨

## 6) レビュアーチェックリスト（最小）
- [ ] 各テストケースのテストID命名規則（UT-OCA-XXX）が正しいか確認
- [ ] 正常系・異常系・境界値の観点が適切にカバーされているか確認
- [ ] プライベートフィールド関連のテストケースが実際のクラス構文で動作するか確認
- [ ] assumption設定（noDocumentAll, pureGetters）の効果が期待通りか確認
- [ ] 無効構文のエラーメッセージが適切か確認
- [ ] 括弧付き代入の評価順序テストが仕様通りか確認
- [ ] C-38, C-40の根拠不足テストケースの妥当性を追加検証
