---
generated_at: 2026-03-01 00:00:00
metrics:
  claims_total: 55
  claims_with_evidence: 53
  claims_without_evidence: 2
confidence_derived: 0.96
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：53 / 55、根拠なし：2
- 優先レビュー（高）
  1. **UT-MSG-034（Windows file:// URL対応）**：Windows環境での実際の動作確認が必要
  2. **UT-MSG-055（Frame型定義確認）**：型定義の検証はランタイムテストでは困難

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

- E-01: `packages/jest-message-util/src/index.ts` - メインソースファイル（543行）
- E-02: `packages/jest-message-util/src/types.ts` - 型定義ファイル（13行）
- E-03: `packages/jest-message-util/src/__tests__/messages.test.ts` - 既存テストファイル（595行）
- E-04: `docs/code-to-docs/単体テストケース一覧/plan.md` - 生成プラン

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

### indentAllLines関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | indentAllLinesが複数行の文字列を正しくインデントする | E-01 L67-68: `indentAllLines`関数の実装、`NOT_EMPTY_LINE_REGEXP`でマッチ | ○ |
| C-02 | 単一行の文字列が正しくインデントされる | E-01 L67-68: 同上 | ○ |
| C-03 | 空文字列が渡された場合に空文字列が返却される | E-01 L67-68: replaceAllは空文字列に対して空文字列を返す | ○ |
| C-04 | 空行のみの文字列は空行がインデントされない | E-01 L65: `NOT_EMPTY_LINE_REGEXP = /^(?!$)/gm` は空行にマッチしない | ○ |

### formatExecError関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 | Errorオブジェクトが正しくフォーマットされる | E-01 L125-236, E-03 L208-225 | ○ |
| C-06 | スタックトレースを含むエラーがフォーマットされる | E-01 L148-151, E-03 L372-401 | ○ |
| C-07 | noStackTraceがtrueの場合スタックが省略される | E-01 L207-210: `!options.noStackTrace`の条件分岐 | ○ |
| C-08 | undefinedが渡された場合のエラー処理 | E-01 L133-136: `!error`チェックでErrorを生成 | ○ |
| C-09 | 数値が渡された場合のエラー処理 | E-01 L133-136: `typeof error === 'number'`チェック | ○ |
| C-10 | 空文字列が渡された場合の処理 | E-01 L142-145: `error ||= 'EMPTY ERROR'` | ○ |
| C-11 | causeを持つエラーのフォーマット | E-01 L152-175, E-03 L563-578 | ○ |
| C-12 | 文字列causeを持つエラーのフォーマット | E-01 L154-155, E-03 L343-370 | ○ |
| C-13 | AggregateErrorのフォーマット | E-01 L176-189, E-03 L580-594 | ○ |
| C-14 | reuseMessageがtrueの場合の処理 | E-01 L222-226 | ○ |
| C-15 | noTitleがtrueの場合の処理 | E-01 L227 | ○ |
| C-16 | document is not definedエラーの検出 | E-01 L98-104: `checkForCommonEnvironmentErrors`関数 | ○ |
| C-17 | window is not definedエラーの検出 | E-01 L100-102 | ○ |
| C-18 | .unref is not a functionエラーの検出 | E-01 L105-106 | ○ |

### formatPath関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | パスが相対パスに変換される | E-01 L293-315: `path.relative`を使用 | ○ |
| C-20 | testMatchにマッチするパスがハイライトされる | E-01 L306-313: `picomatch`でマッチング、`chalk.cyan`でハイライト | ○ |
| C-21 | パスパターンにマッチしない行は変更されない | E-01 L299-302: matchがnullの場合は元の行を返す | ○ |

### getStackTraceLines関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | スタックトレースが行配列に分割される | E-01 L317-323 | ○ |
| C-23 | Jasmine内部の行がフィルタされる | E-01 L49-50, L273-275: `JASMINE_IGNORE`正規表現 | ○ |
| C-24 | Jest内部の行がフィルタされる | E-01 L51-52, L285-287: `JEST_INTERNALS_IGNORE`正規表現 | ○ |
| C-25 | 匿名関数の行がフィルタされる | E-01 L53, L249-251: `ANONYMOUS_FN_IGNORE` | ○ |
| C-26 | Promiseの匿名行がフィルタされる | E-01 L54, L253-255: `ANONYMOUS_PROMISE_IGNORE` | ○ |
| C-27 | Generator.nextの行がフィルタされる | E-01 L55, L257-259: `ANONYMOUS_GENERATOR_IGNORE` | ○ |
| C-28 | 空のスタックトレースが空配列を返す | E-01 L322: `stack.split(/\n/)`は空文字列で空配列を返す | ○ |
| C-29 | optionsが省略された場合のデフォルト値 | E-01 L321: デフォルト値のスプレッド構文 | ○ |

### getTopFrame関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | 最初の有効なフレームが返却される | E-01 L325-342, E-03 L548-561 | ○ |
| C-31 | node_modulesの行がスキップされる | E-01 L45, L327: `PATH_NODE_MODULES`定数でチェック | ○ |
| C-32 | jestパッケージの行がスキップされる | E-01 L46, L327: `PATH_JEST_PACKAGES`定数でチェック | ○ |
| C-33 | file://URLが正しくパースされる | E-01 L334-336: `fileURLToPath`を使用, E-03 L548-561 | ○ |
| C-34 | Windowsのfile://URLが正しくパースされる | E-03 L551-553: Windowsパスのテスト存在 | △ |
| C-35 | 有効なフレームがない場合nullが返る | E-01 L341: `return null` | ○ |
| C-36 | 空の配列が渡された場合nullが返る | E-01 L326-341: for-ofループで処理、空配列はループせずnull返却 | ○ |

### formatStackTrace関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | スタックトレースとコードフレームがフォーマットされる | E-01 L344-387, E-03 L466-492 | ○ |
| C-38 | noCodeFrameがtrueの場合コードフレームが省略される | E-01 L356, E-03 L494-519 | ○ |
| C-39 | noStackTraceがtrueの場合スタックが省略される | E-01 L356, E-03 L521-545 | ○ |
| C-40 | ファイルが存在しない場合のエラーハンドリング | E-01 L368-370: try-catchでエラーを無視 | ○ |
| C-41 | スタックトレースが空の場合 | E-01 L375-377: `lines.length === 0`のチェック | ○ |

### formatResultsErrors関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | テスト結果のエラーがフォーマットされる | E-01 L465-506, E-03 L179-206 | ○ |
| C-43 | 複数の失敗メッセージがフォーマットされる | E-01 L471-477: `flatMap`で複数のfailureMessagesを処理 | ○ |
| C-44 | ancestorTitlesがセパレータで結合される | E-01 L493-494, L60: `ANCESTRY_SEPARATOR` | ○ |
| C-45 | failureMessagesが空の場合nullが返る | E-01 L479-481 | ○ |
| C-46 | testResultsが空配列の場合nullが返る | E-01 L479-481: flatMapの結果が空 | ○ |
| C-47 | causeを持つエラーのフォーマット | E-01 L431-439: `formatErrorStack`でcauseを再帰処理 | ○ |
| C-48 | Babelのコードフレームエラーが保持される | E-03 L285-312: babelStackテスト | ○ |

### separateMessageFromStack関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | メッセージとスタックが正しく分離される | E-01 L521-542 | ○ |
| C-50 | Error:プレフィックスが除去される | E-01 L532-533: 正規表現で`(?:Error: )?`をキャプチャ | ○ |
| C-51 | 空文字列が渡された場合 | E-01 L524-526: `!content`チェック | ○ |
| C-52 | スタックトレースがない場合 | E-01 L528-533: 正規表現でメッセージのみをキャプチャ | ○ |
| C-53 | 複数行のメッセージが正しく抽出される | E-01 L532-533: 正規表現が改行を許容 | ○ |
| C-54 | Error:のみの行が除去される | E-01 L508-516: `removeBlankErrorLine`関数 | ○ |

### 型定義
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | Frame型がStackDataを拡張している | E-02 L10-12 | △ |

## 4) 不足情報（Unknown / Missing）
- **UT-MSG-034（Windows file:// URL対応）**：Windows環境での実機テストが必要。現在はプラットフォーム条件分岐がテストコードにあるが、実際のWindowsでの動作確認は未実施
  - 候補：Windows CI環境でのテスト / 手動テスト / モック
- **UT-MSG-055（Frame型定義確認）**：TypeScriptの型定義は実行時テストでは検証困難
  - 候補：TypeScriptコンパイラによる型チェック / TSTycheによるtype tests

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - ほとんどのテストケースはソースコードの実装から直接導出されており、既存テストファイルでも同様のケースがカバーされている
- **1: 中リスク** - Windows環境固有の処理（file:// URL変換）については実機テストが必要
- **0: 低リスク** - 型定義のテストはランタイムテストの範囲外であり、TypeScriptの型システムで保証される

## 6) レビュアーチェックリスト（最小）
- [ ] 各関数のエクスポート状態（public/internal）が正しく反映されているか確認
- [ ] 既存テストファイル（messages.test.ts）でカバーされていないケースが適切に追加されているか確認
- [ ] Windows環境固有のテストケース（UT-MSG-034）の実行可否を確認
- [ ] 境界値テストケースが実装可能な形式で記述されているか確認
- [ ] causeおよびAggregateErrorの再帰的処理のテストが十分か確認
