---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 160
  claims_with_evidence: 155
  claims_without_evidence: 5
confidence_derived: 0.97
---

# 根拠レポート：stats.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：155 / 160、根拠なし：5
- 優先レビュー（高）
  1. **EXTRACT_ERROR内部関数のテスト**：エラー抽出処理の詳細な分岐テストは、compilation/chunkGraph等の複雑なモックが必要であり実行可能性の確認が必要
  2. **DefaultStatsFactoryPlugin.applyの子コンパイレーション処理**：options.childrenの配列/非配列の分岐パターンが複雑であり、確認が望ましい
  3. **NAMED_PRESETSの全プリセット網羅性**：verbose, detailed, minimal, errors-only, errors-warnings, summary, noneの7プリセットのうち代表的なもののみテストケース化

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

- E-01: `lib/stats/StatsFactory.js` - StatsFactoryクラス定義（行98-406）
- E-02: `lib/stats/StatsPrinter.js` - StatsPrinterクラス定義（行87-300）
- E-03: `lib/stats/DefaultStatsPresetPlugin.js` - applyDefaults関数（行23-31）、normalizeFilter関数（行297-312）、NAMED_PRESETS定数（行36-144）、NORMAL_ON/NORMAL_OFF/ON_FOR_TO_STRING/OFF_FOR_TO_STRING/AUTO_FOR_TO_STRING関数（行150-180）、DEFAULTS定数（行186-285）、NORMALIZER定数（行325-377）、DefaultStatsPresetPluginクラス（行381-417）
- E-04: `lib/stats/DefaultStatsFactoryPlugin.js` - uniqueArray関数（行353-362）、uniqueOrderedArray関数（行372-373）、mapObject関数（行388-395）、countWithChildren関数（行403-411）、EXTRACT_ERROR定数（行414-543）、SIMPLE_EXTRACTORS定数（行549-1025）、spaceLimited関数（行1856-1976）、errorsSpaceLimit関数（行1983-2038）、getItemSize/getTotalSize/getTotalItems関数（行1783-1822）、collapse関数（行1829-1847）、normalizeFieldKey/sortOrderRegular/sortByField関数（行2499-2547）、iterateConfig関数（行2613-2634）、mergeToObject関数（行2670-2676）、assetGroup/moduleGroup/reasonGroup関数（行2047-2093）、DefaultStatsFactoryPluginクラス（行2689-2791）
- E-05: `lib/stats/DefaultStatsPrinterPlugin.js` - plural関数（行44）、printSizes関数（行51-58）、getResourceName関数（行64-75）、getModuleName関数（行81-99）、mapLines関数（行106）、twoDigit関数（行112）、isValidId関数（行118-124）、moreCount関数（行132-133）、createOrder関数（行1563-1582）、indent関数（行1243-1248）、joinInBrackets関数（行1194-1235）、joinExplicitNewLine関数（行1255-1274）、joinError関数（行1280-1291）、AVAILABLE_FORMATS定数（行1462-1550）、DefaultStatsPrinterPluginクラス（行1586-1858）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-STS-001) | StatsFactoryコンストラクタでhooksが初期化される | E-01 行99-125 | ○ |
| C-02 (UT-STS-002) | _cachesが各hookキーに対応するMapで初期化される | E-01 行127-131 | ○ |
| C-03 (UT-STS-003) | _inCreateがfalseに初期化される | E-01 行132 | ○ |
| C-04 (UT-STS-004) | _getAllLevelHooksがキャッシュ未使用時にhookMapから取得 | E-01 行144-159 | ○ |
| C-05 (UT-STS-005) | _getAllLevelHooksがキャッシュヒット時にキャッシュから返却 | E-01 行145-148 | ○ |
| C-06 (UT-STS-006) | ドット無しtypeの場合のフック配列 | E-01 行150-157 | ○ |
| C-07 (UT-STS-007) | 空文字typeの場合 | E-01 行150-157 | ○ |
| C-08 (UT-STS-008) | _forEachLevelがundefined以外を返す場合 | E-01 行172-177 | ○ |
| C-09 (UT-STS-009) | _forEachLevelが全undefined | E-01 行172-177 | ○ |
| C-10 (UT-STS-010) | _forEachLevelフォールスルー | E-01 行172-177 | ○ |
| C-11 (UT-STS-011) | _forEachLevelWaterfallの順次変換 | E-01 行190-195 | ○ |
| C-12 (UT-STS-012) | _forEachLevelWaterfallフック0件 | E-01 行190-195 | ○ |
| C-13 (UT-STS-013) | _forEachLevelFilterの基本動作 | E-01 行210-225 | ○ |
| C-14 (UT-STS-014) | _forEachLevelFilter forceClone=true | E-01 行212 | ○ |
| C-15 (UT-STS-015) | _forEachLevelFilter forceClone=false | E-01 行212 | ○ |
| C-16 (UT-STS-016) | _forEachLevelFilter空配列 | E-01 行210-225 | ○ |
| C-17 (UT-STS-017) | createの基本動作とキャッシュクリア | E-01 行235-248 | ○ |
| C-18 (UT-STS-018) | create再帰呼び出し時 | E-01 行236-237 | ○ |
| C-19 (UT-STS-019) | create例外時のキャッシュクリア | E-01 行239-247 (try/finally) | ○ |
| C-20 (UT-STS-020) | _create配列データパイプライン | E-01 行265-385 | ○ |
| C-21 (UT-STS-021) | _create非配列データ抽出 | E-01 行387-402 | ○ |
| C-22 (UT-STS-022) | _create mergeフック不在時 | E-01 行376 | ○ |
| C-23 (UT-STS-023) | _create getItemNameコンテキスト | E-01 行308-315 | ○ |
| C-24 (UT-STS-024) | _create カスタムファクトリ | E-01 行318-324 | ○ |
| C-25 (UT-STS-025) | _create空配列 | E-01 行265 | ○ |
| C-26 (UT-STS-026) | StatsPrinterコンストラクタhooks初期化 | E-02 行88-104 | ○ |
| C-27 (UT-STS-027) | _levelHookCacheの初期化 | E-02 行106 | ○ |
| C-28 (UT-STS-028) | StatsPrinter._getAllLevelHooksキャッシュミス | E-02 行119-140 | ○ |
| C-29 (UT-STS-029) | StatsPrinter._getAllLevelHooksキャッシュヒット | E-02 行125-128 | ○ |
| C-30 (UT-STS-030) | 新規hookMapのキャッシュ生成 | E-02 行121-124 | ○ |
| C-31 (UT-STS-031) | StatsPrinter._forEachLevel | E-02 行153-158 | ○ |
| C-32 (UT-STS-032) | StatsPrinter._forEachLevelWaterfall | E-02 行171-176 | ○ |
| C-33 (UT-STS-033) | print非再帰呼び出し | E-02 行184-195 | ○ |
| C-34 (UT-STS-034) | print再帰呼び出し | E-02 行185-186 | ○ |
| C-35 (UT-STS-035) | print例外時キャッシュクリア | E-02 行188-194 (try/finally) | ○ |
| C-36 (UT-STS-036) | _print printフック優先 | E-02 行213-215 | ○ |
| C-37 (UT-STS-037) | _print配列オブジェクト処理 | E-02 行217-255 | ○ |
| C-38 (UT-STS-038) | _printオブジェクト処理 | E-02 行256-286 | ○ |
| C-39 (UT-STS-039) | _print printItemsフォールバック | E-02 行252-255 | ○ |
| C-40 (UT-STS-040) | _print printElementsフォールバック | E-02 行283-286 | ○ |
| C-41 (UT-STS-041) | _print nullオブジェクト | E-02 行256条件 | ○ |
| C-42 (UT-STS-042) | _print空配列 | E-02 行217-255 | ○ |
| C-43 (UT-STS-043) | _print undefinedプロパティ除外 | E-02 行257-259 | ○ |
| C-44 (UT-STS-044) | applyDefaults未定義キー適用 | E-03 行23-31 | ○ |
| C-45 (UT-STS-045) | applyDefaults既存値保持 | E-03 行26-27 | ○ |
| C-46 (UT-STS-046) | applyDefaults空defaults | E-03 行24 | ○ |
| C-47 (UT-STS-047) | normalizeFilter文字列 | E-03 行298-302 | ○ |
| C-48 (UT-STS-048) | normalizeFilter testオブジェクト | E-03 行304-306 | ○ |
| C-49 (UT-STS-049) | normalizeFilter boolean | E-03 行307-309 | ○ |
| C-50 (UT-STS-050) | normalizeFilter関数 | E-03 行311 | ○ |
| C-51 (UT-STS-051) | normalizeFilter特殊文字エスケープ | E-03 行299-300 | ○ |
| C-52 (UT-STS-052) | NORMAL_ON all=undefined | E-03 行150 | ○ |
| C-53 (UT-STS-053) | NORMAL_ON all=false | E-03 行150 | ○ |
| C-54 (UT-STS-054) | NORMAL_OFF all=true | E-03 行155 | ○ |
| C-55 (UT-STS-055) | NORMAL_OFF all=undefined | E-03 行155 | ○ |
| C-56 (UT-STS-056) | ON_FOR_TO_STRING forToString=true | E-03 行161-162 | ○ |
| C-57 (UT-STS-057) | ON_FOR_TO_STRING forToString=false | E-03 行161-162 | ○ |
| C-58 (UT-STS-058) | OFF_FOR_TO_STRING | E-03 行168-169 | ○ |
| C-59 (UT-STS-059) | AUTO_FOR_TO_STRING auto返却 | E-03 行175-180 | ○ |
| C-60 (UT-STS-060) | AUTO_FOR_TO_STRING all=false | E-03 行176 | ○ |
| C-61 (UT-STS-061) | AUTO_FOR_TO_STRING all=true | E-03 行177 | ○ |
| C-62 (UT-STS-062) | NORMALIZER.excludeModules非配列 | E-03 行326-332 | ○ |
| C-63 (UT-STS-063) | NORMALIZER.excludeModules配列 | E-03 行326-332 | ○ |
| C-64 (UT-STS-064) | NORMALIZER.excludeModules空値 | E-03 行328-330 | ○ |
| C-65 (UT-STS-065) | NORMALIZER.warningsFilter文字列 | E-03 行351 | ○ |
| C-66 (UT-STS-066) | NORMALIZER.warningsFilter正規表現 | E-03 行353-354 | ○ |
| C-67 (UT-STS-067) | NORMALIZER.warningsFilter関数 | E-03 行355-357 | ○ |
| C-68 (UT-STS-068) | NORMALIZER.warningsFilter無効型 | E-03 行358-360 | ○ |
| C-69 (UT-STS-069) | NORMALIZER.logging true -> "log" | E-03 行365-367 | ○ |
| C-70 (UT-STS-070) | DefaultStatsPresetPlugin.apply プリセット登録 | E-03 行387-396 | ○ |
| C-71 (UT-STS-071) | DefaultStatsPresetPlugin.apply statsNormalize | E-03 行397-412 | ○ |
| C-72 (UT-STS-072) | verboseプリセット | E-03 行37-72 | ○ |
| C-73 (UT-STS-073) | noneプリセット | E-03 行141-143 | ○ |
| C-74 (UT-STS-074) | uniqueArrayユニーク生成 | E-04 行353-362 | ○ |
| C-75 (UT-STS-075) | uniqueArray空入力 | E-04 行353-362 | ○ |
| C-76 (UT-STS-076) | uniqueOrderedArray | E-04 行372-373 | ○ |
| C-77 (UT-STS-077) | mapObject変換 | E-04 行388-395 | ○ |
| C-78 (UT-STS-078) | mapObject空オブジェクト | E-04 行388-395 | ○ |
| C-79 (UT-STS-079) | countWithChildren再帰 | E-04 行403-411 | ○ |
| C-80 (UT-STS-080) | countWithChildren子なし | E-04 行404-405 | ○ |
| C-81 (UT-STS-081) | getItemSize子なし | E-04 行1783-1791 | ○ |
| C-82 (UT-STS-082) | getItemSize子あり+フィルタ | E-04 行1789-1791 | ○ |
| C-83 (UT-STS-083) | getTotalSize | E-04 行1798-1804 | ○ |
| C-84 (UT-STS-084) | getTotalItems | E-04 行1811-1822 | ○ |
| C-85 (UT-STS-085) | collapse子要素畳み込み | E-04 行1829-1847 | ○ |
| C-86 (UT-STS-086) | collapse子なし保持 | E-04 行1842-1843 | ○ |
| C-87 (UT-STS-087) | spaceLimited制限内 | E-04 行1895-1898 | ○ |
| C-88 (UT-STS-088) | spaceLimited制限超過 | E-04 行1899-1905 | ○ |
| C-89 (UT-STS-089) | spaceLimited max=0 | E-04 行1861-1865 | ○ |
| C-90 (UT-STS-090) | spaceLimitedグループ再帰縮小 | E-04 行1906-1973 | ○ |
| C-91 (UT-STS-091) | errorsSpaceLimit制限内 | E-04 行1983-2038 | ○ |
| C-92 (UT-STS-092) | errorsSpaceLimit制限超過 | E-04 行1987-1995 | ○ |
| C-93 (UT-STS-093) | errorsSpaceLimit空エラー | E-04 行1983-2038 | ○ |
| C-94 (UT-STS-094) | normalizeFieldKey !除去 | E-04 行2499-2503 | ○ |
| C-95 (UT-STS-095) | normalizeFieldKey そのまま | E-04 行2502-2503 | ○ |
| C-96 (UT-STS-096) | sortOrderRegular !あり | E-04 行2511-2516 | ○ |
| C-97 (UT-STS-097) | sortOrderRegular !なし | E-04 行2514-2515 | ○ |
| C-98 (UT-STS-098) | sortByField指定あり | E-04 行2523-2547 | ○ |
| C-99 (UT-STS-099) | sortByField !付き | E-04 行2541-2544 | ○ |
| C-100 (UT-STS-100) | sortByField false | E-04 行2524-2531 | ○ |
| C-101 (UT-STS-101) | iterateConfig基本動作 | E-04 行2613-2634 | ○ |
| C-102 (UT-STS-102) | iterateConfig "_"オプション | E-04 行2617 | ○ |
| C-103 (UT-STS-103) | iterateConfig !プレフィックス | E-04 行2618-2619 | ○ |
| C-104 (UT-STS-104) | iterateConfig falseスキップ | E-04 行2621-2628 | ○ |
| C-105 (UT-STS-105) | mergeToObjectマージ | E-04 行2670-2676 | ○ |
| C-106 (UT-STS-106) | mergeToObject空配列 | E-04 行2670-2676 | ○ |
| C-107 (UT-STS-107) | assetGroupサイズ合計 | E-04 行2047-2053 | ○ |
| C-108 (UT-STS-108) | moduleGroupサイズ合計 | E-04 行2063-2077 | ○ |
| C-109 (UT-STS-109) | reasonGroupアクティブ | E-04 行2085-2093 | ○ |
| C-110 (UT-STS-110) | reasonGroup非アクティブ | E-04 行2085-2093 | ○ |
| C-111 (UT-STS-111) | DefaultStatsFactoryPlugin.apply | E-04 行2695-2788 | ○ |
| C-112 (UT-STS-112) | エクストラクタ登録 | E-04 行2704-2710 | ○ |
| C-113 (UT-STS-113) | アイテム名登録 | E-04 行2746-2749 | ○ |
| C-114 (UT-STS-114) | マージ関数登録 | E-04 行2750-2753 | ○ |
| C-115 (UT-STS-115) | 子コンパイレーション配列 | E-04 行2754-2784 | ○ |
| C-116 (UT-STS-116) | plural n=1 | E-05 行44 | ○ |
| C-117 (UT-STS-117) | plural n!=1 | E-05 行44 | ○ |
| C-118 (UT-STS-118) | plural n=0 | E-05 行44 | ○ |
| C-119 (UT-STS-119) | printSizes複数タイプ | E-05 行51-58 | ○ |
| C-120 (UT-STS-120) | printSizes単一タイプ | E-05 行55-56 | ○ |
| C-121 (UT-STS-121) | printSizes空 | E-05 行52-57 | ○ |
| C-122 (UT-STS-122) | getResourceName通常パス | E-05 行64-75 | ○ |
| C-123 (UT-STS-123) | getResourceName data URI | E-05 行66-74 | ○ |
| C-124 (UT-STS-124) | getResourceName null | E-05 行65 | ○ |
| C-125 (UT-STS-125) | getResourceName空文字 | E-05 行65 | ○ |
| C-126 (UT-STS-126) | getModuleNameローダー分離 | E-05 行81-99 | ○ |
| C-127 (UT-STS-127) | getModuleName長い名前切り詰め | E-05 行86-95 | ○ |
| C-128 (UT-STS-128) | getModuleNameローダーなし | E-05 行82-84 | ○ |
| C-129 (UT-STS-129) | mapLines複数行 | E-05 行106 | ○ |
| C-130 (UT-STS-130) | mapLines単一行 | E-05 行106 | ○ |
| C-131 (UT-STS-131) | twoDigit 10以上 | E-05 行112 | ○ |
| C-132 (UT-STS-132) | twoDigit 10未満 | E-05 行112 | ○ |
| C-133 (UT-STS-133) | twoDigit 0 | E-05 行112 | ○ |
| C-134 (UT-STS-134) | isValidId数値 | E-05 行118-124 | ○ |
| C-135 (UT-STS-135) | isValidId文字列 | E-05 行119-121 | ○ |
| C-136 (UT-STS-136) | isValidId null | E-05 行118-124 | ○ |
| C-137 (UT-STS-137) | isValidId 0 | E-05 行119 (typeof id === "number") | ○ |
| C-138 (UT-STS-138) | isValidId空文字 | E-05 行119 | ○ |
| C-139 (UT-STS-139) | moreCount listあり | E-05 行132-133 | ○ |
| C-140 (UT-STS-140) | moreCount list空 | E-05 行133 | ○ |
| C-141 (UT-STS-141) | createOrder並び替え | E-05 行1563-1582 | ○ |
| C-142 (UT-STS-142) | createOrder !付き要素追加 | E-05 行1571 | ○ |
| C-143 (UT-STS-143) | indent基本 | E-05 行1243-1248 | ○ |
| C-144 (UT-STS-144) | indent noPrefixInFirstLine | E-05 行1245 | ○ |
| C-145 (UT-STS-145) | joinInBrackets | E-05 行1194-1235 | ○ |
| C-146 (UT-STS-146) | joinInBrackets空 | E-05 行1194-1235 | ○ |
| C-147 (UT-STS-147) | joinExplicitNewLine | E-05 行1255-1274 | ○ |
| C-148 (UT-STS-148) | joinExplicitNewLine改行始まり | E-05 行1267 | ○ |
| C-149 (UT-STS-149) | joinError ERROR | E-05 行1280-1291 | ○ |
| C-150 (UT-STS-150) | joinError WARNING | E-05 行1280-1291 | ○ |
| C-151 (UT-STS-151) | DefaultStatsPrinterPlugin.apply | E-05 行1592-1857 | ○ |
| C-152 (UT-STS-152) | colors=true ANSIカラー | E-05 行1599-1627 | ○ |
| C-153 (UT-STS-153) | colors=false恒等関数 | E-05 行1628-1633 | ○ |
| C-154 (UT-STS-154) | sortElements登録 | E-05 行1820-1827 | ○ |
| C-155 (UT-STS-155) | getItemName登録 | E-05 行1829-1837 | ○ |
| C-156 (UT-STS-156) | result登録 | E-05 行1851-1854 | ○ |
| C-157 (UT-STS-157) | formatChunkId default | E-05 行1463-1473 | ○ |
| C-158 (UT-STS-158) | formatChunkId parent | E-05 行1466 | ○ |
| C-159 (UT-STS-159) | formatChunkId child | E-05 行1470 | ○ |
| C-160 (UT-STS-160) | formatChunkId sibling | E-05 行1468 | ○ |

## 4) 不足情報（Unknown / Missing）
- **EXTRACT_ERROR定数の内部関数テスト**：EXTRACT_ERROR内の `_`, `ids`, `moduleTrace`, `errorDetails`, `errorStack`, `errorCause`, `errorErrors` の各関数は、Compilation, ChunkGraph, ModuleGraph等の複雑なオブジェクトに依存しており、テストケースの前提条件として具体的なモック構成が推論に基づく
  - 候補：実際のwebpackテストスイートのモック構成を参照 / 統合テストで代替
- **SIMPLE_EXTRACTORSの各エクストラクタ詳細テスト**：compilation, asset, module, chunk等の各エクストラクタは非常に大量のフィールドを処理しており、全フィールドの個別テストケース化は省略
  - 候補：主要フィールドのテストケースはDefaultStatsFactoryPlugin.applyの登録テストでカバー
- **COMPILATION_SIMPLE_PRINTERS等のプリンタ関数テスト**：各プリンタ定数（ASSET_SIMPLE_PRINTERS, MODULE_SIMPLE_PRINTERS等）の個別関数は、テストケースとしてDefaultStatsPrinterPlugin.applyのフック登録テストで間接的にカバー
  - 候補：個別プリンタ関数の直接テスト追加
- **ASSETS_GROUPERS, MODULES_GROUPERS, MODULE_REASONS_GROUPERSの詳細テスト**：グルーピング設定の各関数は複雑なGroupConfig構造を生成しており、テストケースの具体的な入出力が推論に基づく
  - 候補：smartGrouping関数のテストと合わせた統合テスト
- **FILTER, FILTER_RESULTS定数のテスト**：フィルタリング関数は限定的なケースのみでありテストケースとしては省略
  - 候補：iterateConfigを通じた間接テスト

## 5) リスクフラグ（レビュー観点）
- 0: `StatsFactory` / `StatsPrinter` のコア処理（_getAllLevelHooks, _forEachLevel, create, print等） - ソースコードから直接確認可能
- 0: `DefaultStatsPresetPlugin` のヘルパー関数群 - 純粋関数で入出力が明確
- 0: `DefaultStatsPrinterPlugin` のヘルパー関数群 - 純粋関数で入出力が明確
- 1: `DefaultStatsFactoryPlugin` のSIMPLE_EXTRACTORS内各エクストラクタ - 複雑なwebpackオブジェクトに依存し、モック構成が推論ベース
- 1: `spaceLimited` / `errorsSpaceLimit` の再帰処理 - 複雑なアルゴリズムのため境界ケースの漏れの可能性

## 6) レビュアーチェックリスト（最小）
- [ ] StatsFactory.create / StatsPrinter.print のキャッシュクリア動作（try/finally）が正しくテストされているか
- [ ] _forEachLevelFilterのforceCloneパラメータの動作が仕様通りか
- [ ] spaceLimitedの再帰的グループ縮小のテストケースが実行可能か（複雑なネスト構造のモック）
- [ ] EXTRACT_ERROR系テストケースの前提条件（Compilation, ChunkGraph等のモック）が実現可能か
- [ ] normalizeFilterの正規表現パターンが全てのエッジケースをカバーしているか
- [ ] SIMPLE_EXTRACTORSの主要エクストラクタ（compilation, asset, module, chunk等）の個別テストケース追加が必要か判断
