---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 50
  claims_with_evidence: 48
  claims_without_evidence: 2
confidence_derived: 0.96
---

# 根拠レポート：babel-plugin-transform-unicode-escapes 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：48 / 50、根拠なし：2
- 優先レビュー（高）
  1. **UT-UES-037（Babel 7バージョンアサート）**：REQUIRED_VERSIONマクロの実装詳細が不明
  2. **UT-UES-045/046（コードポイント境界値）**：実際のサロゲートペア計算結果の検証が必要

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

- E-01: `packages/babel-plugin-transform-unicode-escapes/src/index.ts` - メインソースコード
- E-02: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/string/input.js` - 文字列テストケース入力
- E-03: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/string/output.js` - 文字列テストケース出力
- E-04: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/template/input.js` - テンプレートテストケース入力
- E-05: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/template/output.js` - テンプレートテストケース出力
- E-06: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-bare-identifier/input.js` - 識別子テストケース入力
- E-07: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-bare-identifier/output.js` - 識別子テストケース出力
- E-08: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-member-property/input.js` - メンバープロパティ入力
- E-09: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-member-property/output.js` - メンバープロパティ出力
- E-10: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/tagged-template/input.js` - タグ付きテンプレート入力
- E-11: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/directive/input.js` - ディレクティブ入力
- E-12: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/directive/output.js` - ディレクティブ出力
- E-13: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-object-property-key/input.js` - オブジェクトプロパティキー入力
- E-14: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-object-property-key/output.js` - オブジェクトプロパティキー出力
- E-15: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/escaped-bare-identifier-global/input.js` - グローバル識別子テスト
- E-16: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/uHHHH-escape/input.js` - uHHHHエスケープ入力
- E-17: `packages/babel-plugin-transform-unicode-escapes/test/fixtures/unicode-escapes/uHHHH-escape/output.js` - uHHHHエスケープ出力

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | escape関数はコードポイントを4桁16進数に変換する | E-01 (L10-12: `escape`関数定義) | ○ |
| C-02 | escape関数はサロゲートペア用コードポイントを変換する | E-01 (L10-12) | ○ |
| C-03 | escape関数は0を4桁パディングする | E-01 (L11: `padStart(4, "0")`) | ○ |
| C-04 | escape関数は0xFFFFを変換する | E-01 (L10-12) | ○ |
| C-05 | replacer関数は奇数バックスラッシュでBMP内文字をエスケープする | E-01 (L14-23: `replacer`関数) | ○ |
| C-06 | replacer関数はBMP外文字をサロゲートペアに変換する | E-01 (L19-22), E-02, E-03 | ○ |
| C-07 | replacer関数は偶数バックスラッシュでマッチをそのまま返す | E-01 (L15-17), E-02, E-03 | ○ |
| C-08 | replacer関数は3個のバックスラッシュを処理する | E-01 (L14-23), E-02, E-03 | ○ |
| C-09 | replacer関数はバックスラッシュ1個（奇数）を処理する | E-01 (L15) | ○ |
| C-10 | replacer関数はバックスラッシュ2個（偶数）を処理する | E-01 (L15-17) | ○ |
| C-11 | replaceUnicodeEscapes関数はUnicodeエスケープを置換する | E-01 (L25-27), E-02, E-03 | ○ |
| C-12 | replaceUnicodeEscapes関数は複数のエスケープを処理する | E-01 (L25-27), E-02 | ○ |
| C-13 | replaceUnicodeEscapes関数はエスケープなし文字列をそのまま返す | E-01 (L25-27) | ○ |
| C-14 | replaceUnicodeEscapes関数は空文字列を処理する | E-01 (L25-27) | ○ |
| C-15 | getUnicodeEscape関数はUnicodeエスケープを検出する | E-01 (L29-37) | ○ |
| C-16 | getUnicodeEscape関数はエスケープなしでnullを返す | E-01 (L36) | ○ |
| C-17 | getUnicodeEscape関数は偶数バックスラッシュ後のエスケープをスキップする | E-01 (L32) | ○ |
| C-18 | getUnicodeEscape関数は最初の有効なエスケープを返す | E-01 (L29-37) | ○ |
| C-19 | getUnicodeEscape関数は空文字列でnullを返す | E-01 (L29-37) | ○ |
| C-20 | manipulateOptionsはjsescOptionを初期化する | E-01 (L44-46) | ○ |
| C-21 | manipulateOptionsはminimalをfalseに設定する | E-01 (L47) | ○ |
| C-22 | manipulateOptionsは既存のminimal設定を保持する | E-01 (L47: `??=`演算子) | ○ |
| C-23 | Identifierビジターはサロゲート識別子をリネームする | E-01 (L50-84), E-06, E-07 | ○ |
| C-24 | Identifierビジターはサロゲートなし識別子をスキップする | E-01 (L56) | ○ |
| C-25 | Identifierビジターはキープロパティを文字列に置換する | E-01 (L60-63), E-13, E-14 | ○ |
| C-26 | IdentifierビジターはMemberExpressionをcomputed=trueに設定する | E-01 (L67-73), E-08, E-09 | ○ |
| C-27 | IdentifierビジターはOptionalMemberExpressionをcomputed=trueに設定する | E-01 (L68) | ○ |
| C-28 | Identifierビジターはバインディングなしグローバル識別子でエラーをスローする | E-01 (L81-83), E-15 | ○ |
| C-29 | StringLiteralビジターはextra.rawを変換する | E-01 (L86-93), E-02, E-03 | ○ |
| C-30 | DirectiveLiteralビジターはextra.rawを変換する | E-01 (L86-93), E-11, E-12 | ○ |
| C-31 | StringLiteralビジターはextra.raw未定義をスキップする | E-01 (L92: `extra?.raw`) | ○ |
| C-32 | TemplateElementビジターはvalue.rawを変換する | E-01 (L95-110), E-04, E-05 | ○ |
| C-33 | TemplateElementビジターはエスケープなしをスキップする | E-01 (L100) | ○ |
| C-34 | TemplateElementビジターはタグ付きテンプレートでエラーをスローする | E-01 (L103-106), E-10 | ○ |
| C-35 | TemplateElementビジターはタグなしテンプレートを変換する | E-01 (L109), E-04, E-05 | ○ |
| C-36 | プラグイン名はtransform-unicode-escapesである | E-01 (L40) | ○ |
| C-37 | Babel 7以上が必要である | E-01 (L5) | △ |
| C-38 | escape関数は3桁コードを4桁にパディングする | E-01 (L11) | ○ |
| C-39 | replacer関数はBMP内1文字を処理する | E-01 (L14-23) | ○ |
| C-40 | Identifierビジターはオブジェクトメソッドキーを変換する | E-01 (L60-63) | ○ |
| C-41 | Identifierビジターはクラスメソッドキーを変換する | E-01 (L60-63) | ○ |
| C-42 | Identifierビジターはクラスフィールドキーを変換する | E-01 (L60-63) | ○ |
| C-43 | Identifierビジターはオブジェクトアクセサキーを変換する | E-01 (L60-63) | ○ |
| C-44 | Identifierビジターはショートハンドプロパティをリネームする | E-01 (L75-79) | ○ |
| C-45 | replacer関数はU+10FFFFを処理する | E-01 (L14-23) | △ |
| C-46 | replacer関数はU+10000を処理する | E-01 (L14-23) | ○ |
| C-47 | getUnicodeEscape関数は大文字16進数を検出する | E-01 (L8: `/[0-9a-fA-F]+/`) | ○ |
| C-48 | StringLiteralビジターは複数エスケープを変換する | E-01 (L86-93), E-02 | ○ |
| C-49 | Identifierビジターは複数サロゲートをリネームする | E-01 (L53-55) | ○ |
| C-50 | TemplateElementビジターは複数要素を変換する | E-01 (L95-110) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-37（Babel 7バージョンアサート）**：`REQUIRED_VERSION(7)`マクロの実装詳細がソースコードから直接確認できない。ビルド時にマクロ展開される可能性が高い。
  - 候補：Babelビルド設定 / babel-helper-plugin-utils / マクロ定義ファイル
- **C-45（U+10FFFF境界値）**：実際の出力値`\\udbff\\udfff`の計算が正しいか数学的検証が必要。
  - 候補：Unicode仕様書 / サロゲートペア計算式のドキュメント

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**：escape関数、replaceUnicodeEscapes関数 - 既存テストフィクスチャで十分にカバー
- **0（低リスク）**：StringLiteral/DirectiveLiteralビジター - テストフィクスチャで動作確認済み
- **0（低リスク）**：TemplateElementビジター - タグ付きテンプレートのエラー処理含めテスト済み
- **1（中リスク）**：Identifierビジター - 多岐にわたる条件分岐があり、全パターンの網羅確認が必要
- **1（中リスク）**：境界値テスト - Unicodeコードポイントの最大値・最小値の計算結果要確認
- **0（低リスク）**：manipulateOptions - 単純なオプション設定処理

## 6) レビュアーチェックリスト（最小）
- [ ] escape関数のパディング処理（padStart(4, "0")）が正しく動作するか確認
- [ ] replacer関数のバックスラッシュ個数判定ロジック（L15: `backslashes.length % 2 === 0`）が意図通りか確認
- [ ] サロゲートペア変換（char.length === 1の判定）がBMP境界値で正しいか確認
- [ ] Identifierビジターの条件分岐（key, MemberExpression, binding）が全パターン網羅されているか確認
- [ ] タグ付きテンプレートリテラルのエラーメッセージが適切か確認
- [ ] REQUIRED_VERSIONマクロの動作を別途確認（ビルドプロセス依存）
- [ ] テストケースの優先度設定が適切か確認（特に境界値テストの優先度）
