---
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-proposal-decorators 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：58 / 60、根拠なし：2
- 優先レビュー（高）
  1. **UT-DEC-056〜059（テンプレート検証）**：テンプレート文字列の正確性は実行時テストで確認が必要
  2. **UT-DEC-060（WeakSet動作確認）**：WeakSetの内部状態追跡の実際の動作確認が必要

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

- E-01: `packages/babel-plugin-proposal-decorators/src/index.ts` - プラグインエントリーポイント
- E-02: `packages/babel-plugin-proposal-decorators/src/transformer-legacy.ts` - レガシー変換処理
- E-03: `packages/babel-plugin-proposal-decorators/package.json` - パッケージ設定
- E-04: `@babel/helper-plugin-utils` - declareヘルパー（外部依存）
- E-05: `@babel/helper-create-class-features-plugin` - クラス機能プラグイン（外部依存）
- E-06: `@babel/plugin-syntax-decorators` - デコレータ構文（外部依存）
- E-07: `@babel/core` - template, types（外部依存）

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

### index.ts - プラグインファクトリ

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | version='legacy'でレガシーモードプラグインが返却される | E-01 L26-31 | ○ |
| C-02 | version='2023-11'で2023-11モードプラグインが返却される | E-01 L32-42 | ○ |
| C-03 | versionが未指定の場合2023-11モードがデフォルト | E-01 L32 `!version` | ○ |
| C-04 | 不正なversionでエラーがスローされる | E-01 L43-46 | ○ |
| C-05 | APIバージョンアサーションが呼び出される | E-01 L20 | ○ |
| C-06 | version='2023-11'時に追加のAPIバージョンアサーション | E-01 L33 | ○ |

### transformer-legacy.ts - ヘルパー関数

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 | applyEnsureOrdering: 非識別子デコレータのホイスト | E-02 L53-89 | ○ |
| C-08 | applyEnsureOrdering: 全て識別子の場合undefined | E-02 L77 `if (identDecorators.length === 0) return` | ○ |
| C-09 | applyEnsureOrdering: デコレータ0件でundefined | E-02 L77 | ○ |
| C-10 | applyEnsureOrdering: ObjectExpressionでも動作 | E-02 L63 `path.get("properties")` | ○ |
| C-11 | applyClassDecorators: 逆順適用 | E-02 L105 `.reverse()` | ○ |
| C-12 | applyClassDecorators: decoratorsがnullに | E-02 L99 | ○ |
| C-13 | applyClassDecorators: デコレータなしでundefined | E-02 L96 `if (!hasClassDecorators(classPath.node)) return` | ○ |
| C-14 | hasClassDecorators: デコレータあり→true | E-02 L115-117 | ○ |
| C-15 | hasClassDecorators: デコレータなし→false | E-02 L116 `!!classNode.decorators?.length` | ○ |
| C-16 | hasClassDecorators: 空配列→false | E-02 L116 `.length`が0→falsy | ○ |
| C-17 | applyMethodDecorators: メソッドデコレータ適用 | E-02 L123-135 | ○ |
| C-18 | applyMethodDecorators: デコレータなしでundefined | E-02 L127 | ○ |
| C-19 | hasMethodDecorators: デコレータあり→true | E-02 L137-145 | ○ |
| C-20 | hasMethodDecorators: デコレータなし→false | E-02 L140-143 `.some()` | ○ |
| C-21 | applyObjectDecorators: オブジェクトプロパティデコレータ | E-02 L151-164 | ○ |
| C-22 | applyObjectDecorators: SpreadElementフィルタ | E-02 L160-162 | ○ |
| C-23 | applyTargetDecorators: インスタンスプロパティでprototype | E-02 L203-208 | ○ |
| C-24 | applyTargetDecorators: 静的プロパティでクラス自体 | E-02 L203-208 三項演算子 | ○ |
| C-25 | applyTargetDecorators: computed propertyでエラー | E-02 L187-194 | ○ |
| C-26 | applyTargetDecorators: ClassPropertyでinitializerWarningHelper | E-02 L221-226 | ○ |
| C-27 | applyTargetDecorators: 初期値ありでfunction式 | E-02 L213-218 | ○ |
| C-28 | applyTargetDecorators: 初期値なしでnull | E-02 L219 `t.nullLiteral()` | ○ |
| C-29 | applyTargetDecorators: メソッドでgetOwnPropertyDescriptor | E-02 L268-271 | ○ |
| C-30 | applyTargetDecorators: 静的プロパティでbuildGetObjectInitializer | E-02 L262-267 | ○ |
| C-31 | applyTargetDecorators: SequenceExpression返却 | E-02 L280-284 | ○ |
| C-32 | decoratedClassToExpression: let変数宣言に変換 | E-02 L296-298 | ○ |
| C-33 | decoratedClassToExpression: 既存IDを使用 | E-02 L292-294 | ○ |
| C-34 | decoratedClassToExpression: UID生成 | E-02 L294 `generateUidIdentifier` | ○ |
| C-35 | decoratedClassToExpression: デコレータなしでundefined | E-02 L288-290 | ○ |

### transformer-legacy.ts - Visitor

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | ExportDefaultDeclaration: 変換実行 | E-02 L302-322 | ○ |
| C-37 | ExportDefaultDeclaration: デコレータなしスキップ | E-02 L306-307 `if (replacement)` | ○ |
| C-38 | ExportDefaultDeclaration: 非クラススキップ | E-02 L304 `if (!decl.isClassDeclaration()) return` | ○ |
| C-39 | ExportDefaultDeclaration: 無名クラスのスコープ登録 | E-02 L319-321 | ○ |
| C-40 | ClassDeclaration: 変数宣言に置換 | E-02 L324-336 | ○ |
| C-41 | ClassDeclaration: バインディング更新 | E-02 L333-335 | ○ |
| C-42 | ClassDeclaration: デコレータなしスキップ | E-02 L326 `if (replacement)` | ○ |
| C-43 | ClassExpression: applyEnsureOrdering優先 | E-02 L341-343 `||`の評価順 | ○ |
| C-44 | ClassExpression: applyClassDecorators適用 | E-02 L343 | ○ |
| C-45 | ClassExpression: applyMethodDecorators適用 | E-02 L344 | ○ |
| C-46 | ClassExpression: 変換不要でスキップ | E-02 L346 `if (decoratedClass)` | ○ |
| C-47 | ObjectExpression: applyEnsureOrdering | E-02 L349-350 | ○ |
| C-48 | ObjectExpression: applyObjectDecorators | E-02 L350 | ○ |
| C-49 | ObjectExpression: 変換不要でスキップ | E-02 L352 `if (decoratedObject)` | ○ |
| C-50 | AssignmentExpression: initializerDefinePropertyに変換 | E-02 L355-371 | ○ |
| C-51 | AssignmentExpression: WARNING_CALLS外でスキップ | E-02 L356 | ○ |
| C-52 | CallExpression: defineProperty→initializerDefineProperty | E-02 L374-393 | ○ |
| C-53 | CallExpression: 引数3つでない場合スキップ | E-02 L375 | ○ |
| C-54 | CallExpression: WARNING_CALLSにない場合スキップ | E-02 L376 | ○ |
| C-55 | CallExpression: callee名チェック | E-02 L381 | ○ |

### transformer-legacy.ts - テンプレート・WeakSet

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | buildClassDecorator: テンプレート式 | E-02 L6-12 | △ |
| C-57 | buildClassPrototype: テンプレート式 | E-02 L14-16 | △ |
| C-58 | buildGetDescriptor: テンプレート式 | E-02 L18-23 | ○ |
| C-59 | buildGetObjectInitializer: テンプレート式 | E-02 L25-38 | ○ |
| C-60 | WARNING_CALLS: WeakSet追跡 | E-02 L40, L226 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-56, C-57**: テンプレートリテラルの正確な出力形式は、Babelのtemplate関数の内部動作に依存するため、実行時テストでの検証が推奨される
  - 候補：既存のfixtureテスト / babel-template のユニットテスト / 実行時スナップショットテスト

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 全体的にソースコードに基づいた明確な根拠がある
- **1 (中リスク)**: テンプレート関連（C-56〜C-59）は生成コードの正確性を実行時に確認が必要
- **1 (中リスク)**: 外部依存（helper-create-class-features-plugin, plugin-syntax-decorators）の動作は外部モジュールのテストに委ねられる

## 6) レビュアーチェックリスト（最小）
- [ ] versionオプションの分岐ロジック（legacy/2023-11/デフォルト）が正しくテストされているか
- [ ] computed property拒否のエラーメッセージが仕様と一致しているか
- [ ] WARNING_CALLSによるAssignmentExpression/CallExpression変換の相互作用が網羅されているか
- [ ] 外部依存（createClassFeaturePlugin）のモック戦略が適切か
- [ ] テンプレート生成コードの出力が期待通りか（fixtureテストとの整合性）
- [ ] デコレータ適用順序（逆順）のテストが十分か
