# 帳票設計書 25-Stats errors-warnings プリセット

## 概要

本ドキュメントは、webpackのビルド統計情報のうちエラーと警告のみを出力する「errors-warnings」プリセットの設計仕様を定義する。DefaultStatsPresetPlugin.jsにおけるNAMED_PRESETS["errors-warnings"]の定義に基づく。

### 本帳票の処理概要

errors-warningsプリセットは、ビルドのエラーおよび警告情報のみを出力するプリセットである。`all: false`で全項目を無効化した上で、errors、errorsCount、warnings、warningsCountを有効化する。エラー・警告ともにスペース制限はInfinityに設定されており、全情報が省略なく表示される。

**業務上の目的・背景**：ビルドの品質問題（エラーと警告）に焦点を当てた出力が必要な場合に使用される。errors-onlyプリセットでは警告が見逃されるリスクがあるため、エラーと警告の両方を確認したい場合に適している。CI/CDパイプラインでのビルド品質チェックや、コードレビュー時のビルド検証に有用。

**帳票の利用シーン**：CI/CDパイプラインでのビルド品質チェック、プルリクエスト検証時のエラー・警告確認、開発ワークフローでの問題確認、ビルドスクリプトでの品質ゲート。

**主要な出力内容**：
1. エラー情報（全てのビルドエラーの完全な詳細）
2. エラー件数
3. 警告情報（全てのビルド警告の完全な詳細）
4. 警告件数

**帳票の出力タイミング**：webpack設定の`stats`オプションに`"errors-warnings"`を指定した場合、またはStats.toString("errors-warnings")・Stats.toJson("errors-warnings")を呼び出した場合に出力される。

**帳票の利用者**：CI/CDエンジニア、フロントエンド開発者、テックリード（コードレビュー時）

## 帳票種別

統計レポート（プリセット設定）

## 利用画面

| 画面No | 画面名 | URL/ルーティング | 出力操作 |
|--------|--------|-----------------|---------|
| - | CLI | webpack --stats errors-warnings | コマンドライン引数指定 |
| - | webpack設定ファイル | webpack.config.js | stats: "errors-warnings" 設定 |
| - | Node.js API | - | Stats.toString("errors-warnings") / Stats.toJson("errors-warnings") |

## 出力形式

### 基本仕様

| 項目 | 内容 |
|-----|------|
| ファイル形式 | テキスト（toString）/ JSON（toJson） |
| 用紙サイズ | 該当なし（コンソール/ファイル出力） |
| 向き | 該当なし |
| ファイル名 | 標準出力またはユーザー指定 |
| 出力方法 | コンソール出力 / プログラマティック取得 |
| 文字コード | UTF-8 |

## 帳票レイアウト

### レイアウト概要

errors-warningsプリセットはエラーと警告のみを出力する。ビルドにエラーも警告もない場合は出力が空になる。

```
┌─────────────────────────────────────┐
│     エラー一覧（制限なし）            │
├─────────────────────────────────────┤
│     エラー件数                       │
├─────────────────────────────────────┤
│     警告一覧（制限なし）              │
├─────────────────────────────────────┤
│     警告件数                         │
└─────────────────────────────────────┘
```

### ヘッダー部

該当なし（エラー・警告情報のみ出力）

### 明細部

| No | 項目名 | 説明 | データ取得元 | 表示形式 | 列幅 |
|----|-------|------|-------------|---------|-----|
| 1 | errors | エラー一覧（制限なし） | compilation.errors | 構造化データ | - |
| 2 | errorsCount | エラー件数 | compilation.errors.length | 数値 | - |
| 3 | warnings | 警告一覧（制限なし） | compilation.getWarnings() | 構造化データ | - |
| 4 | warningsCount | 警告件数 | compilation.getWarnings().length | 数値 | - |

### フッター部

| No | 項目名 | 説明 | データ取得元 | 表示形式 |
|----|-------|------|-------------|---------|
| 1 | errorsCount | エラー総数 | compilation.errors.length | 数値 |
| 2 | warningsCount | 警告総数 | compilation.getWarnings().length | 数値 |

## 出力条件

### 抽出条件

| 条件名 | 説明 | 必須 |
|-------|------|-----|
| statsオプション指定 | stats: "errors-warnings" の指定 | Yes |

### ソート順

| 優先度 | 項目 | 昇順/降順 |
|-------|------|---------|
| - | - | エラー・警告は発生順 |

### 改ページ条件

該当なし。errorsSpace/warningsSpaceともにInfinityのため全件表示される。

## データベース参照仕様

### 参照テーブル一覧

本帳票はデータベースを参照しない。

| テーブル名 | 用途 | 結合条件 |
|-----------|------|---------|
| Compilation | エラー・警告情報 | - |

## 計算仕様

### 計算項目一覧

| 項目名 | 計算式 | 端数処理 | 備考 |
|-------|-------|---------|------|
| errorsCount | compilation.errors.length | なし | 整数 |
| warningsCount | compilation.getWarnings().length | なし | 整数 |

## 処理フロー

### 出力フロー

```mermaid
flowchart TD
    A[Stats.toString/toJson呼出] --> B[createStatsOptions]
    B --> C{statsPresetフック}
    C -->|errors-warnings| D[NAMED_PRESETS.errors-warnings適用]
    D --> E[all:false で全項目無効化]
    E --> F[errors/warnings関連項目のみ有効化]
    F --> G[StatsFactory.create]
    G --> H{エラーまたは警告あり?}
    H -->|Yes| I[エラー/警告詳細出力]
    H -->|No| J[空出力]
```

## エラー処理

### エラーケース一覧

| エラー種別 | 発生条件 | 表示メッセージ | 対処方法 |
|----------|---------|--------------|---------|
| エラー・警告なし | 両方とも0件の場合 | （空出力） | 正常動作 |

## パフォーマンス要件

| 項目 | 内容 |
|-----|------|
| 想定データ件数 | エラー・警告件数に依存（通常は少数） |
| 目標出力時間 | 極めて高速（エラー・警告データのみ処理） |
| 同時出力数上限 | 1（ビルドごとに1回） |

## セキュリティ考慮事項

エラー・警告メッセージにファイルパスやモジュール名が含まれる場合があるが、出力範囲がエラー・警告に限定されているため情報漏洩リスクは低い。

## 備考

- errors-onlyプリセットとの違い：warnings/warningsCount/warningsSpaceが追加されている点と、moduleTraceが含まれない点
- `logging: "warn"`により、warnレベル以上のログ出力が有効（errors-onlyの`logging: "error"`とは異なる）
- errorsSpace: Infinity、warningsSpace: Infinityにより、全エラー・警告が省略なく表示される

---

## コードリーディングガイド

本帳票を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

errors-warningsプリセットの設定構造とerrors-onlyとの差分を理解する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行125-134: NAMED_PRESETS["errors-warnings"]の全プロパティ定義 |
| 1-2 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行117-124: errors-onlyプリセットとの比較 |

**読解のコツ**: errors-warningsはerrors-onlyの拡張版。warnings関連の3項目（warnings, warningsCount, warningsSpace）が追加され、moduleTraceが除外されている。logging レベルも"error"から"warn"に変更されている。

#### Step 2: エントリーポイントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | Stats.js | `lib/Stats.js` | 行57-86: toJson()/toString()メソッド |

#### Step 3: all: falseの効果を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行150, 155: NORMAL_ON/NORMAL_OFF関数 |
| 3-2 | DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | 行263-270: errors/warnings関連のデフォルト設定 |

### プログラム呼び出し階層図

```
Stats.toString("errors-warnings") / Stats.toJson("errors-warnings")
    |
    +-- Compilation.createStatsOptions("errors-warnings", context)
    |       |
    |       +-- statsPreset.for("errors-warnings").call(options)
    |       |       |
    |       |       +-- applyDefaults(options, {all:false, errors:true, warnings:true, ...})
    |       |
    |       +-- statsNormalize.call(options, context)
    |
    +-- StatsFactory.create("compilation", compilation, context)
    |       |
    |       +-- エラー・警告情報のextractのみ実行
    |
    +-- [toStringの場合] StatsPrinter.print("compilation", data)
```

### データフロー図

```
[入力]                              [処理]                           [出力]

webpack.config.js              DefaultStatsPresetPlugin         コンソール
  stats: "errors-warnings" ---> all: false                ---> エラー・警告詳細
                                   |                            または空出力
                              errors/errorsCount/
                              warnings/warningsCount
                              のみ有効化
                                   |
Compilation                  StatsFactory.create()
  .errors              --->   エラー情報抽出          ---> エラーメッセージ
  .getWarnings()              警告情報抽出                 警告メッセージ
                                                          エラー件数
                                                          警告件数
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| DefaultStatsPresetPlugin.js | `lib/stats/DefaultStatsPresetPlugin.js` | ソース | プリセット定義（行125-134） |
| Stats.js | `lib/Stats.js` | ソース | Stats API のエントリーポイント |
| StatsFactory.js | `lib/stats/StatsFactory.js` | ソース | 統計データの抽出エンジン |
| StatsPrinter.js | `lib/stats/StatsPrinter.js` | ソース | 統計データのテキスト整形エンジン |
| DefaultStatsFactoryPlugin.js | `lib/stats/DefaultStatsFactoryPlugin.js` | ソース | エラー・警告extractフック実装 |
