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

# 根拠レポート：jest-snapshot-utils 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：54 / 54、根拠なし：0
- 優先レビュー（高）
  1. なし - 全テストケースにソースコードまたは既存テストコードからの根拠あり

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

- E-01: `packages/jest-snapshot-utils/src/utils.ts` - メインユーティリティ関数の実装
- E-02: `packages/jest-snapshot-utils/src/types.ts` - 型定義
- E-03: `packages/jest-snapshot-utils/src/index.ts` - エクスポート定義
- E-04: `packages/jest-snapshot-utils/src/__tests__/utils.test.ts` - 既存の単体テスト
- E-05: `packages/jest-snapshot-utils/package.json` - パッケージ定義

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

### testNameToKey関数（UT-SNU-001〜008）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 基本的なテスト名とカウントでキーが生成される | E-01 L122-123, E-04 L37-40 | ○ |
| C-02 | 末尾スペースを含むテスト名でキーが生成される | E-01 L122-123, E-04 L39 | ○ |
| C-03 | CRLF改行がエスケープされる | E-01 L94-106, E-04 L43 | ○ |
| C-04 | CR改行がエスケープされる | E-01 L94-106, E-04 L44 | ○ |
| C-05 | LF改行がエスケープされる | E-01 L94-106, E-04 L45 | ○ |
| C-06 | カウント0でも正しくキー生成される | E-01 L122-123 | ○ |
| C-07 | 空文字テスト名でキー生成される | E-01 L122-123 | ○ |
| C-08 | 異なる改行コードで異なるキーが生成される | E-01 L94-106, E-04 L47-49 | ○ |

### keyToTestName関数（UT-SNU-009〜015）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | 基本的なキーからテスト名が復元される | E-01 L125-131, E-04 L27 | ○ |
| C-10 | 末尾スペースを含むキーから復元される | E-01 L125-131, E-04 L28 | ○ |
| C-11 | エスケープCRLFがデコードされる | E-01 L108-120, E-04 L29 | ○ |
| C-12 | エスケープCRがデコードされる | E-01 L108-120, E-04 L30 | ○ |
| C-13 | エスケープLFがデコードされる | E-01 L108-120, E-04 L31 | ○ |
| C-14 | 数字で終わらないキーで例外発生 | E-01 L126-128, E-04 L32-34 | ○ |
| C-15 | testNameToKeyとkeyToTestNameが可逆 | E-01 L94-131, E-04 L52-69 | ○ |

### getSnapshotData関数（UT-SNU-016〜027）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | 存在するファイルからデータが読み込まれる | E-01 L133-165 | ○ |
| C-17 | 存在しないファイルで空データが返される | E-01 L144-151 | ○ |
| C-18 | バージョンヘッダーなしでupdate='none'で例外 | E-01 L27-41, 153-158, E-04 L99-114 | ○ |
| C-19 | 古いバージョンでupdate='none'で例外 | E-01 L43-58, E-04 L116-136 | ○ |
| C-20 | 新しいバージョンでupdate='none'で例外 | E-01 L60-74, E-04 L138-164 | ○ |
| C-21 | 非推奨ガイドリンクでupdate='none'で例外 | E-01 L76-89, E-04 L166-186 | ○ |
| C-22 | update='all'で無効でも例外なし | E-01 L160-162, E-04 L188-196 | ○ |
| C-23 | update='all'で無効スナップショットがdirty=true | E-01 L160-162, E-04 L198-206 | ○ |
| C-24 | update='all'で有効スナップショットがdirty=false | E-01 L153-164, E-04 L208-219 | ○ |
| C-25 | update='new'で無効スナップショットがdirty=true | E-01 L160-162 | ○ |
| C-26 | Linux改行スナップショットが読み込まれる | E-01 L16, E-04 L138-164 | ○ |
| C-27 | Windows改行スナップショットが読み込まれる | E-01 L16, E-04 L138-164 | ○ |

### escapeBacktickString関数（UT-SNU-028〜032）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | バックティックがエスケープされる | E-01 L167-168 | ○ |
| C-29 | バックスラッシュがエスケープされる | E-01 L167-168, E-04 L221-239 | ○ |
| C-30 | テンプレートリテラル構文がエスケープされる | E-01 L167-168 | ○ |
| C-31 | 空文字列で空文字列が返される | E-01 L167-168 | ○ |
| C-32 | 複合的なエスケープが処理される | E-01 L167-168, E-04 L221-239 | ○ |

### ensureDirectoryExists関数（UT-SNU-033〜035）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | ディレクトリが存在しない場合作成される | E-01 L173-177 | ○ |
| C-34 | ディレクトリが既に存在する場合エラーにならない | E-01 L173-177 | ○ |
| C-35 | ネストしたディレクトリが再帰的に作成される | E-01 L175 ({recursive: true}) | ○ |

### normalizeNewlines関数（UT-SNU-036〜041）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | CRLFがLFに正規化される | E-01 L179-180 | ○ |
| C-37 | CRがLFに正規化される | E-01 L179-180 | ○ |
| C-38 | LFはそのまま維持される | E-01 L179-180 | ○ |
| C-39 | 混在した改行コードが全てLFに正規化される | E-01 L179-180 | ○ |
| C-40 | 空文字列で空文字列が返される | E-01 L179-180 | ○ |
| C-41 | 改行を含まない文字列がそのまま返される | E-01 L179-180 | ○ |

### saveSnapshotFile関数（UT-SNU-042〜050）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | スナップショットデータがファイルに保存される | E-01 L182-200 | ○ |
| C-43 | バージョンヘッダーが含まれる | E-01 L24-25, 198, E-04 L77-83 | ○ |
| C-44 | CRLF改行がLFに正規化されて保存される | E-01 L191, E-04 L71-83 | ○ |
| C-45 | CR改行がLFに正規化されて保存される | E-01 L191, E-04 L85-97 | ○ |
| C-46 | 複数スナップショットがアルファベット順にソートされる | E-01 L186-187 (naturalCompare) | ○ |
| C-47 | バックティック文字がエスケープされる | E-01 L170-171, 190 | ○ |
| C-48 | 特殊文字がエスケープされ復元可能 | E-01 L167-171, E-04 L221-239 | ○ |
| C-49 | 空データでヘッダーのみのファイルが保存される | E-01 L186-199 | ○ |
| C-50 | 親ディレクトリが自動作成される | E-01 L195 | ○ |

### 定数・型定義（UT-SNU-051〜054）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | SNAPSHOT_VERSIONが'1'である | E-01 L15 | ○ |
| C-52 | SNAPSHOT_GUIDE_LINKが正しいURL | E-01 L17 | ○ |
| C-53 | SNAPSHOT_VERSION_WARNINGが警告メッセージを含む | E-01 L18-22 | ○ |
| C-54 | SnapshotData型がRecord<string, string> | E-02 L8 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全テストケースに対してソースコードからの根拠が確認できた

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースに明確な根拠あり
- 既存テスト（E-04）でカバーされているケースが多く、信頼性が高い
- 境界値テスト（空文字列、カウント0など）は既存テストでカバーされていない部分があるが、ソースコードの実装から導出可能

## 6) レビュアーチェックリスト（最小）
- [ ] testNameToKey/keyToTestNameの改行エスケープ処理が正しく記述されているか
- [ ] getSnapshotDataの各updateモード（none/all/new）の動作が正しく記述されているか
- [ ] escapeBacktickStringのエスケープ対象文字（バックティック、バックスラッシュ、${）が網羅されているか
- [ ] normalizeNewlinesの改行パターン（CRLF、CR、LF）が網羅されているか
- [ ] saveSnapshotFileのソート処理（naturalCompare使用）が正しく記述されているか
- [ ] 優先度の設定が適切か（金額計算なし、主にデータ変換・整合性の処理）
