---
generated_at: 2026-03-01 06:30:00
metrics:
  claims_total: 45
  claims_with_evidence: 43
  claims_without_evidence: 2
confidence_derived: 0.96
---

# 根拠レポート：babel-plugin-transform-private-property-in-object 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：43 / 45、根拠なし：2
- 優先レビュー（高）
  1. **C-38, C-39（型定義テスト）**：TypeScriptの型チェックはランタイムテストとは異なる手法が必要
  2. **複雑なネストクラスシナリオ**：テストフィクスチャとの整合性確認推奨

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

- E-01: `packages/babel-plugin-transform-private-property-in-object/src/index.ts` - メインソースファイル（206行）
- E-02: `packages/babel-helper-create-class-features-plugin/src/index.ts` - ヘルパープラグイン
- E-03: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/field/input.js` - フィールドテストフィクスチャ入力
- E-04: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/field/output.js` - フィールドテストフィクスチャ出力
- E-05: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/method/input.js` - メソッドテストフィクスチャ入力
- E-06: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/method/output.js` - メソッドテストフィクスチャ出力
- E-07: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/static-method/input.js` - 静的メソッドフィクスチャ入力
- E-08: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/static-method/output.js` - 静的メソッドフィクスチャ出力
- E-09: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/nested-class/input.js` - ネストクラスフィクスチャ入力
- E-10: `packages/babel-plugin-transform-private-property-in-object/test/fixtures/private/accessor/input.js` - アクセサフィクスチャ入力

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | looseオプションがfalseの場合にprivateIn機能が有効化される | E-01 (L118) | ○ |
| C-02 | looseオプションがtrueの場合にlooseモードで有効化される | E-01 (L118) | ○ |
| C-03 | looseオプション未指定時にfalseとして扱われる | E-01 (L118: `loose ?? false`) | ○ |
| C-04 | unshadow関数でスコープ内変数名衝突を解消 | E-01 (L31-36) | ○ |
| C-05 | targetScopeとscopeが同じ場合は何もしない | E-01 (L32: while条件) | ○ |
| C-06 | 複数中間スコープでの衝突解消 | E-01 (L32-35: whileループ) | ○ |
| C-07 | フィールドに値がある場合に式が後ろに挿入される | E-01 (L43-49) | ○ |
| C-08 | before=trueで式が前に挿入される | E-01 (L45-46) | ○ |
| C-09 | フィールドに値がない場合にvoid式として設定 | E-01 (L50-52) | ○ |
| C-10 | 非静的フィールドが存在する場合にフィールドへ初期化注入 | E-01 (L55-82) | ○ |
| C-11 | 非静的フィールドがない場合にコンストラクタへ初期化注入 | E-01 (L77-81) | ○ |
| C-12 | 静的フィールドのみの場合にコンストラクタへ注入 | E-01 (L64-66: staticチェック) | ○ |
| C-13 | フィールドもコンストラクタもない場合のデフォルトコンストラクタ作成 | E-02 (injectInitialization関数) | ○ |
| C-14 | WeakMapにIDが存在しない場合に新しいID生成 | E-01 (L97-107) | ○ |
| C-15 | WeakMapにIDが存在する場合にキャッシュされたID返却 | E-01 (L95-96) | ○ |
| C-16 | 新しいWeakSetがクラス前に挿入される | E-01 (L106) | ○ |
| C-17 | inject関数が呼び出されてthisがWeakSetに追加 | E-01 (L101) | ○ |
| C-18 | 生成WeakSetにannotateAsPureが適用 | E-01 (L104) | ○ |
| C-19 | プライベートフィールドのin演算子がWeakSet.hasに変換 | E-03, E-04 | ○ |
| C-20 | プライベートメソッドのin演算子がクラスWeakSet.hasに変換 | E-05, E-06 | ○ |
| C-21 | 静的プライベートメソッドのin演算子がクラス比較に変換 | E-07, E-08 | ○ |
| C-22 | in演算子以外は処理されない | E-01 (L124) | ○ |
| C-23 | 左辺がPrivateNameでない場合は処理されない | E-01 (L125) | ○ |
| C-24 | ネストクラス内でも正しいWeakSetが使用される | E-09, E-01 (L132-142) | ○ |
| C-25 | 親クラスのパターン内にある場合にIIFEでラップ | E-01 (L144-149) | ○ |
| C-26 | 名前なしクラスに静的メソッドがある場合にIDが生成 | E-01 (L156-158) | ○ |
| C-27 | 名前付きクラスで静的メソッドの場合に既存IDが使用 | E-01 (L154-155) | ○ |
| C-28 | unshadowが静的メソッドで正しく呼び出される | E-01 (L154-155) | ○ |
| C-29 | プライベートアクセサ（getter）のin演算子が正しく変換 | E-10, E-01 (L152) | ○ |
| C-30 | プライベートアクセサ（setter）のin演算子が正しく変換 | E-01 (L152: ClassPrivateMethod) | ○ |
| C-31 | 静的プライベートフィールドのin演算子が正しく変換 | E-01 (L183-200) | ○ |
| C-32 | 静的プライベートアクセサのin演算子が正しく変換 | E-01 (L152-166) | ○ |
| C-33 | 同一クラス内の複数プライベートフィールドが個別のWeakSet | E-01 (L26-29: fieldsWeakSets) | ○ |
| C-34 | buildCheckInRHSが右辺に適用される | E-01 (L161-163, L177-179, L195-197) | ○ |
| C-35 | api.assertVersionが正しいバージョン範囲で呼び出される | E-01 (L15) | ○ |
| C-36 | プラグイン名が正しく設定される | E-01 (L113) | ○ |
| C-37 | manipulateOptionsがundefinedである | E-01 (L114) | ○ |
| C-38 | looseオプションがboolean型として受け付けられる | E-01 (L11-13: interface) | △ |
| C-39 | looseオプションがオプショナルである | E-01 (L12: `loose?:`) | △ |
| C-40 | ネストクラスで外部クラスのプライベートフィールドを参照 | E-01 (L132-142: findParent) | ○ |
| C-41 | 内部クラスで同名フィールド再定義時に内部用WeakSet使用 | E-01 (L135-139) | ○ |
| C-42 | クラスごとにWeakSetが正しく管理される | E-01 (L25: classWeakSets) | ○ |
| C-43 | フィールドごとにWeakSetが正しく管理される | E-01 (L26-29: fieldsWeakSets) | ○ |
| C-44 | 短いフィールド名でも正しく処理される | E-01 (L127, L98) | ○ |
| C-45 | 複数回の変換で同じWeakSetが再利用される | E-01 (L95-96: キャッシュチェック) | ○ |

## 4) 不足情報（Unknown / Missing）
- **TypeScript型定義のテスト（C-38, C-39）**：型定義はランタイムではなくコンパイル時にチェックされるため、単体テストとしての実装方法が異なる。TypeScriptコンパイラを使用した型チェックテスト、または`@ts-expect-error`を使用した負のテストが必要。
  - 候補：`tsd`ライブラリ / `dtslint` / カスタム型テスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**：プラグインの主要機能（BinaryExpression visitor）は既存のテストフィクスチャで十分カバーされている
- **1（中リスク）**：ヘルパー関数（unshadow, injectToFieldInit, injectInitialization, getWeakSetId）の個別ユニットテストが存在しない可能性。これらは統合テスト経由でのみテストされている可能性がある
- **0（低リスク）**：テストフィクスチャが多数存在し、正常系の変換パターンは十分カバーされている

## 6) レビュアーチェックリスト（最小）
- [ ] UT-PPI-019〜021（主要変換ロジック）：テストフィクスチャと期待結果が一致することを確認
- [ ] UT-PPI-024, 025（ネストクラス、パターン内クラス）：エッジケースの処理が正しいことを確認
- [ ] UT-PPI-004〜006（unshadow関数）：変数シャドウイング解消ロジックが正しいことを確認
- [ ] UT-PPI-038, 039（型定義）：TypeScript型テストの実装方法を検討
- [ ] ヘルパー関数のユニットテスト：統合テストでカバーされていない分岐がないか確認
