---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 35
  claims_with_evidence: 35
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：babel-helper-plugin-utils 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：35 / 35、根拠なし：0
- 優先レビュー（高）
  1. **declare関数の正常系テスト**：コア機能のため重要
  2. **throwVersionError関数のエラー処理**：エラーハンドリングの正確性確認
  3. **copyApiObject関数のプロトタイプ処理**：Babel 7互換性に関わる

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

- E-01: `packages/babel-helper-plugin-utils/src/index.ts` (lines 1-130) - メインソースファイル
- E-02: `packages/babel-helper-plugin-utils/package.json` - パッケージ定義
- E-03: ソースコード内のコメント（lines 18-23, 58-63）- 設計意図の説明

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | declare関数が有効なビルダー関数をラップして返却する | E-01 (lines 26-52) | ○ |
| C-02 | APIにassertVersionが存在する場合、ポリフィルが適用されない | E-01 (lines 40-47: `if (api[name]) continue;`) | ○ |
| C-03 | APIにassertVersionが存在しない場合、ポリフィルが適用される | E-01 (lines 45-46: `clonedApi[name] = apiPolyfills[name](clonedApi);`) | ○ |
| C-04 | optionsがundefinedの場合、空オブジェクトが渡される | E-01 (line 50: `options \|\| {}`) | ○ |
| C-05 | dirnameがビルダーに正しく渡される | E-01 (line 50: `builder(clonedApi ?? api, options \|\| {}, dirname)`) | ○ |
| C-06 | ビルダー関数が例外をスローした場合、例外が伝播する | E-01 (lines 49-50: ビルダーを直接呼び出し) | ○ |
| C-07 | declarePresetがdeclare関数のエイリアスである | E-01 (line 54: `export const declarePreset = declare as ...`) | ○ |
| C-08 | declarePresetがPresetAPI/PresetObject型で動作する | E-01 (lines 54-56: 型定義) | ○ |
| C-09 | copyApiObjectがBabel 7のAPIオブジェクトを正しくコピーする | E-01 (lines 58-82), E-03 | ○ |
| C-10 | プロトタイプにversion/transform/template/typesがある場合、プロトタイプも含めてコピーされる | E-01 (lines 66-76: プロトタイプ検証ロジック) | ○ |
| C-11 | プロトタイプにversionがない場合、プロトタイプは無視される | E-01 (line 69: `!Object.hasOwn(proto, 'version')`) | ○ |
| C-12 | プロトタイプにtransformがない場合、プロトタイプは無視される | E-01 (line 70: `!Object.hasOwn(proto, 'transform')`) | ○ |
| C-13 | プロトタイプにtemplateがない場合、プロトタイプは無視される | E-01 (line 71: `!Object.hasOwn(proto, 'template')`) | ○ |
| C-14 | プロトタイプにtypesがない場合、プロトタイプは無視される | E-01 (line 72: `!Object.hasOwn(proto, 'types')`) | ○ |
| C-15 | versionが7.で始まらない場合、プロトタイプは無視される | E-01 (line 65: `api.version.startsWith("7.")`) | ○ |
| C-16 | versionがstring以外の場合、プロトタイプは無視される | E-01 (line 65: `typeof api.version === "string"`) | ○ |
| C-17 | 整数のrangeが正しいsemver形式に変換される | E-01 (lines 85-89: `range = \`^${range}.0.0-0\``) | ○ |
| C-18 | 文字列のrangeがそのまま使用される | E-01 (lines 91-93: 型チェック後の処理) | ○ |
| C-19 | Babel 7.xバージョンで適切なエラーメッセージが生成される | E-01 (lines 104-108: `version.startsWith("7.")`) | ○ |
| C-20 | Babel 7.x以外のバージョンで汎用エラーメッセージが生成される | E-01 (lines 109-118: else分岐) | ○ |
| C-21 | エラーオブジェクトにcode/version/rangeプロパティが付与される | E-01 (lines 124-128: `Object.assign(err, {...})`) | ○ |
| C-22 | rangeが小数の場合、エラーがスローされる | E-01 (lines 86-88: `!Number.isInteger(range)`) | ○ |
| C-23 | rangeがnumberでもstringでもない場合、エラーがスローされる | E-01 (lines 91-93: 型チェック) | ○ |
| C-24 | rangeがnullの場合、エラーがスローされる | E-01 (lines 91-93: `typeof range !== "string"`) | ○ |
| C-25 | rangeがundefinedの場合、エラーがスローされる | E-01 (lines 91-93: 型チェック) | ○ |
| C-26 | Error.stackTraceLimitが25未満の場合、一時的に25に設定される | E-01 (lines 97-101: `limit < 25`) | ○ |
| C-27 | Error.stackTraceLimitが25以上の場合、変更されない | E-01 (lines 97-101: 条件分岐) | ○ |
| C-28 | 関数終了時にError.stackTraceLimitが元の値に復元される | E-01 (lines 120-122: 復元処理) | ○ |
| C-29 | range=0の場合、'^0.0.0-0'に変換される | E-01 (line 89: テンプレートリテラル) | ○ |
| C-30 | rangeが負の整数の場合、変換される | E-01 (line 89: Number.isIntegerは負の整数もtrue) | ○ |
| C-31 | ポリフィルされたassertVersionがthrowVersionErrorを呼び出す | E-01 (lines 21-23: `throwVersionError(range, api.version)`) | ○ |
| C-32 | ポリフィルがapi.versionを正しく参照する | E-01 (line 22: `api.version`) | ○ |
| C-33 | 複数回呼び出しても毎回新しいラップ関数が返される | E-01 (lines 26-52: 関数を毎回return) | ○ |
| C-34 | ビルダーの戻り値がそのまま返却される | E-01 (line 50: `return builder(...)`) | ○ |
| C-35 | apiがnullの場合の挙動 | E-01 (lines 40-41: Object.keysがTypeErrorを発生) | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし - すべてのテストケースはソースコードから直接導出されています

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - すべてのテストケースがソースコードの実装に直接基づいている
- UT-HPU-035（apiがnullの場合）は想定外の使用パターンであり、実際の動作確認が推奨される

## 6) レビュアーチェックリスト（最小）
- [ ] declare関数のポリフィル適用ロジック（lines 40-47）の理解が正しいか確認
- [ ] copyApiObject関数のプロトタイプ検証条件（lines 66-76）がBabel 7の仕様と一致するか確認
- [ ] throwVersionError関数のエラーメッセージがユーザーにとって適切か確認
- [ ] Error.stackTraceLimitの操作が他のコードに影響を与えないか確認
- [ ] 境界値テスト（UT-HPU-029, UT-HPU-030）の期待結果が妥当か確認
