---
generated_at: 2026-02-19 19:05:00
metrics:
  claims_total: 90
  claims_with_evidence: 88
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：modules-ui-doom-dashboard 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：88 / 90、根拠なし：2
- 優先レビュー（高）
  1. **C-56**: バナーパディングの適用タイミング（display-graphic-p条件下での動作）
  2. **C-85, C-89**: forward-button/backward-buttonのラップ動作（nilパラメータの挙動確認が必要）

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

- E-01: `modules/ui/doom-dashboard/config.el` - メイン設定ファイル（521行）
- E-02: `modules/ui/doom-dashboard/autoload.el` - 自動ロード関数定義（29行）
- E-03: `modules/ui/doom-dashboard/README.org` - モジュールドキュメント（117行）
- E-04: Emacs Lisp標準関数のドキュメント（forward-button, backward-button等）

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

### 基本機能（+doom-dashboard-p）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | ダッシュボードバッファの場合にtを返す | E-01: 317-319行 `(eq buffer (get-buffer +doom-dashboard-name))` | ○ |
| C-02 | 非ダッシュボードバッファの場合にnilを返す | E-01: 317-319行 | ○ |
| C-03 | nilが渡された場合の処理 | E-01: 317-319行、eqの仕様 | ○ |

### 中央揃え関数（+doom-dashboard--center）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-04 | 文字列を指定幅で中央揃え | E-01: 362-364行 `(make-string (ceiling (max 0 (- len (length s))) 2) ? )` | ○ |
| C-05 | 空文字列の場合 | E-01: 362-364行、length関数の仕様 | ○ |
| C-06 | 文字列長が幅を超える場合 | E-01: 362行 `(max 0 ...)` でマイナスを防止 | ○ |
| C-07 | 幅が0の場合 | E-01: 362行 | ○ |

### PWD取得関数（+doom-dashboard--get-pwd）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | policyがnilの場合 | E-01: 369-370行 `((null policy) default-directory)` | ○ |
| C-09 | policyが文字列の場合 | E-01: 371-372行 `((stringp policy) (expand-file-name policy lastcwd))` | ○ |
| C-10 | policyが関数の場合 | E-01: 373-374行 `((functionp policy) (funcall policy lastcwd))` | ○ |
| C-11 | last-projectでプロジェクトルートが見つかる場合 | E-01: 377-379行 | ○ |
| C-12 | last-projectでプロジェクトルートがない場合 | E-01: 378-379行 `(or (doom-project-root lastcwd) lastcwd)` | ○ |
| C-13 | ポリシーがlastの場合 | E-01: 380-381行 `((eq policy 'last) lastcwd)` | ○ |
| C-14 | lastcwdがnilの場合 | E-01: 375-376行 `((null lastcwd) default-directory)` | ○ |
| C-15 | 不正なポリシー値の場合 | E-01: 382-383行 `(warn ...)` | ○ |

### リロード関数（+doom-dashboard-reload）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | ダッシュボードがリロードされる | E-01: 339-359行 | ○ |
| C-17 | forceパラメータで強制リロード | E-01: 341行, 345行 `force` 条件 | ○ |
| C-18 | inhibit-refreshがtの場合 | E-01: 341行 `(not +doom-dashboard-inhibit-refresh)` | ○ |
| C-19 | inhibit-functionsの処理 | E-01: 344行 `(run-hook-with-args-until-success '+doom-dashboard-inhibit-functions)` | ○ |
| C-20 | ミニバッファアクティブ時 | E-01: 343行 `(not (window-minibuffer-p (frame-selected-window)))` | ○ |
| C-21 | ポイント位置の復元 | E-01: 349行, 355行 `(let ((pt (point))) ... (goto-char pt)` | ○ |

### PWD更新関数（+doom-dashboard-update-pwd-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | pwdが指定された場合 | E-01: 324-327行 | ○ |
| C-23 | pwdが指定されない場合 | E-01: 328-332行 | ○ |
| C-24 | アクセス不可能なディレクトリ | E-01: 329行 `(file-accessible-directory-p new-pwd)` | ○ |

### ポイント位置調整（+doom-dashboard-reposition-point-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | ボタン上にある場合 | E-01: 237-238行 `(if (button-at (point)) (forward-button 0)` | ○ |
| C-26 | ボタン外にある場合 | E-01: 239行 `(backward-button 1)` | ○ |
| C-27 | リージョンがアクティブな場合 | E-01: 232-233行 `(when (region-active-p) (setq deactivate-mark t))` | ○ |
| C-28 | evil-mode連携 | E-01: 234-235行 | ○ |

### 条件付きリロード（+doom-dashboard-reload-maybe-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 | ダッシュボードバッファの場合 | E-01: 252-254行 | ○ |
| C-30 | realバッファの場合 | E-01: 255-258行 | ○ |
| C-31 | リモートパスの場合 | E-01: 255行 `(not (file-remote-p default-directory))` | ○ |

### フレームリロード（+doom-dashboard-reload-frame-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | タイマーがセットされる | E-01: 265-266行 `(run-with-timer 0.1 nil #'+doom-dashboard-reload t)` | ○ |
| C-33 | 既存タイマーのキャンセル | E-01: 263-264行 `(when (timerp ...) (cancel-timer ...))` | ○ |

### リサイズ処理（+doom-dashboard-resize-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | マージン計算 | E-01: 277-278行 `(max 0 (/ (- (window-total-width win) +doom-dashboard--width) 2))` | ○ |
| C-35 | 狭いウィンドウ処理 | E-01: 277行 `(max 0 ...)` | ○ |
| C-36 | フリンジ設定 | E-01: 276行 `(set-window-fringes win 0 0)` | ○ |
| C-37 | パディング適用 | E-01: 286-291行 | ○ |

### 初期化処理（+doom-dashboard-init-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | doom-fallback-buffer-name設定 | E-01: 109行 | ○ |
| C-39 | initial-buffer-choice設定 | E-01: 110行 | ○ |
| C-40 | 非対話モード | E-01: 106行 `(unless noninteractive ...)` | ○ |
| C-41 | fancy-splash-image設定 | E-01: 111-114行 | ○ |
| C-42 | *scratch*からの切り替え | E-01: 115-117行 | ○ |

### テーマ変更時リロード（+doom-dashboard-reload-on-theme-change-h）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | after-init-time後にリロード | E-01: 336-337行 | ○ |
| C-44 | 初期化前の処理 | E-01: 336行 `(when after-init-time ...)` | ○ |

### persp-mode連携
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | persp-modeでPWD更新 | E-01: 293-301行 | ○ |
| C-46 | persp-mode無効時 | E-01: 299行 `(when (bound-and-true-p persp-mode) ...)` | ○ |
| C-47 | プロジェクトルート記録 | E-01: 303-311行 | ○ |
| C-48 | persp引数指定時 | E-01: 309-310行 | ○ |

### ウィジェット関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | ASCIIバナー描画 | E-01: 389-420行 | ○ |
| C-50 | doom-dashboard-bannerフェイス適用 | E-01: 411行 `'face 'doom-dashboard-banner` | ○ |
| C-51 | バナー中央揃え | E-01: 414-415行 `(+doom-dashboard--center ...)` | ○ |
| C-52 | バナーウィジェット | E-01: 422-441行 | ○ |
| C-53 | GUIモードで画像表示 | E-01: 426-439行 | ○ |
| C-54 | 画像ファイルが読み取れない場合 | E-01: 428行 `(file-readable-p fancy-splash-image)` | ○ |
| C-55 | TTYモード処理 | E-01: 426行 `(display-graphic-p)` の条件 | ○ |
| C-56 | バナー後パディング | E-01: 440-441行 | △ |
| C-57 | ベンチマーク表示 | E-01: 443-452行 | ○ |
| C-58 | init-time未設定時 | E-01: 444行 `(when doom-init-time ...)` | ○ |
| C-59 | loadedフェイス適用 | E-01: 451行 `'face 'doom-dashboard-loaded` | ○ |
| C-60 | メニュー項目表示 | E-01: 454-506行 | ○ |
| C-61 | :when条件処理 | E-01: 459-460行 | ○ |
| C-62 | :action検証 | E-01: 458行 `(fboundp action)` | ○ |
| C-63 | アイコン表示 | E-01: 464行 | ○ |
| C-64 | キーバインド動的表示 | E-01: 481-501行 | ○ |
| C-65 | ボタンアクション | E-01: 469-473行 | ○ |
| C-66 | GUIレイアウト | E-01: 504-506行 | ○ |
| C-67 | TTYレイアウト | E-01: 504-506行 | ○ |
| C-68 | フッター表示 | E-01: 508-520行 | ○ |
| C-69 | フッターアイコン表示 | E-01: 514行 | ○ |
| C-70 | GitHubページリンク | E-01: 516行 `(browse-url "https://github.com/hlissner/doom-emacs")` | ○ |

### メジャーモード（+doom-dashboard-mode）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | メジャーモード設定 | E-01: 170-193行 | ○ |
| C-72 | truncate-lines設定 | E-01: 176行 | ○ |
| C-73 | undo無効化 | E-01: 175行 `(buffer-disable-undo)` | ○ |
| C-74 | 行番号非表示 | E-01: 185行 | ○ |
| C-75 | hl-line設定 | E-01: 193行 | ○ |
| C-76 | フック設定 | E-01: 190行 | ○ |

### autoload.el関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | ヘルプメッセージ表示 | E-02: 3-6行 | ○ |
| C-78 | ボタン外でのメッセージ | E-02: 4行 `(when-let* ((btn (button-at (point))) ...)` | ○ |
| C-79 | nil help-echo処理 | E-02: 5行 `(msg (button-get btn 'help-echo))` | ○ |
| C-80 | ダッシュボードを開く | E-02: 9-14行 | ○ |
| C-81 | 強制リロード | E-02: 14行 `(+doom-dashboard-reload t)` | ○ |
| C-82 | 対話的呼び出し | E-02: 11行 `(selected-frame)` | ○ |
| C-83 | forward-button基本動作 | E-02: 17-21行 | ○ |
| C-84 | forward-buttonヘルプ表示 | E-02: 21行 `(+doom-dashboard--help-echo)` | ○ |
| C-85 | forward-button境界処理 | E-02: 20行 nilパラメータ | △ |
| C-86 | forward-button複数移動 | E-02: 19行 `(interactive "p")` | ○ |
| C-87 | backward-button基本動作 | E-02: 24-28行 | ○ |
| C-88 | backward-buttonヘルプ表示 | E-02: 28行 | ○ |
| C-89 | backward-button境界処理 | E-02: 27行 nilパラメータ | △ |
| C-90 | backward-button複数移動 | E-02: 26行 | ○ |

## 4) 不足情報（Unknown / Missing）

### C-56: バナー後パディングの適用
- コード上では `display-graphic-p` が真の場合のみパディングが適用される（440-441行）
- ASCIIバナーのみの場合のパディング処理については明示的な記述がない
- 候補：ASCIIバナー関数内でのパディング処理 / 別途パディング処理 / 意図的な省略

### C-85, C-89: forward-button/backward-buttonの境界処理
- `forward-button` および `backward-button` の第2引数に `nil` を渡している
- Emacs標準関数のドキュメントによると、nilはラップを無効化するが、境界でのエラー処理については実装依存
- 候補：エラーがスローされる / 無視される / 現在位置を維持

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 説明 |
|---|---|---|
| 0 | 基本機能（+doom-dashboard-p, --center） | ソースコードから直接確認可能 |
| 0 | リロード・更新処理 | 条件分岐が明確に定義されている |
| 0 | ウィジェット描画 | 各ウィジェット関数の動作が明確 |
| 1 | persp-mode連携 | 外部依存があり、persp-mode非有効時のテストが必要 |
| 1 | 境界値テスト | ボタンナビゲーションの境界処理はEmacs標準関数に依存 |
| 0 | メジャーモード設定 | 設定値が明確に定義されている |

## 6) レビュアーチェックリスト（最小）

- [ ] +doom-dashboard-p関数のバッファ判定ロジックが正しいか
- [ ] +doom-dashboard--get-pwdの各ポリシー分岐が網羅されているか
- [ ] +doom-dashboard-reloadの抑制条件（inhibit-refresh, inhibit-functions, minibuffer）が正しいか
- [ ] ウィジェット関数（banner, loaded, shortmenu, footer）の描画テストが適切か
- [ ] autoload.el関数のインタラクティブ動作テストが含まれているか
- [ ] persp-mode連携テストが有効/無効両方のケースをカバーしているか
- [ ] forward-button/backward-buttonの境界動作を実環境で確認
