---
generated_at: 2026-02-19 10:30:00
metrics:
  claims_total: 71
  claims_with_evidence: 71
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：modules-editor-snippets 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：71 / 71、根拠なし：0
- 優先レビュー（高）
  1. **UT-SNP-004〜006**: プライベートスニペット優先ロジックの複雑な条件分岐
  2. **UT-SNP-032〜035**: delete-forward-char-or-fieldの複数の分岐条件
  3. **UT-SNP-058〜060**: Evil統合のregion処理アドバイス

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

- E-01: `modules/editor/snippets/config.el` (135行) - メイン設定ファイル
- E-02: `modules/editor/snippets/autoload/snippets.el` (350行) - autoload関数群
- E-03: `modules/editor/snippets/autoload/settings.el` (11行) - 設定用autoload
- E-04: `modules/editor/snippets/packages.el` (11行) - パッケージ定義
- E-05: `modules/editor/snippets/README.org` (67行) - ドキュメント

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

### snippets.el - 内部ヘルパー関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | +snippets--remove-pは同一キーかつdoom-emacs-dir内のスニペットでtrueを返す | E-02:3-6行 | ○ |
| C-02 | +snippets--remove-pはキーが異なる場合nilを返す | E-02:4行 equal比較 | ○ |
| C-03 | +snippets--remove-pはdoom-emacs-dir外のファイルでnilを返す | E-02:5行 file-in-directory-p | ○ |
| C-04 | +snippets-prompt-privateは重複を除去しプライベートを優先 | E-02:8-30行 | ○ |
| C-05 | +snippets-prompt-privateは単一選択肢をそのまま返す | E-02:26-27行 | ○ |
| C-06 | +snippets-prompt-privateはyas-expand以外でnilを返す | E-02:21行 this-command check | ○ |
| C-07 | +snippet--ensure-dirは既存ディレクトリをそのまま返す | E-02:32-37行 | ○ |
| C-08 | +snippet--ensure-dirは存在しないディレクトリを作成可能 | E-02:34-35行 | ○ |
| C-09 | +snippet--ensure-dirはユーザー拒否時にエラーをスロー | E-02:36行 error | ○ |
| C-10 | +snippets--use-snippet-file-name-pはファイル非存在でtを返す | E-02:39-42行 | ○ |
| C-11 | +snippets--use-snippet-file-name-pは上書き許可でtを返す | E-02:41行 y-or-n-p | ○ |
| C-12 | +snippets--use-snippet-file-name-pは上書き拒否でnilを返す | E-02:41行 | ○ |
| C-13 | +snippet--get-template-by-uuidはUUIDでテンプレートを検索 | E-02:44-51行 | ○ |
| C-14 | +snippet--get-template-by-uuidはテンプレート未検出でnilを返す | E-02:47-51行 cl-loop | ○ |
| C-15 | +snippet--get-template-by-uuidは親モードも検索対象 | E-02:48行 yas--modes-to-activate | ○ |
| C-16 | +snippet--completing-read-uuidは現在モード限定検索可能 | E-02:53-67行 | ○ |
| C-17 | +snippet--completing-read-uuidは全モード検索可能 | E-02:56-58行 all-snippets | ○ |
| C-18 | +snippets--snippet-mode-name-completing-readは全モード選択可能 | E-02:69-77行 | ○ |
| C-19 | +snippets--snippet-mode-name-completing-readは拡張モードから選択可能 | E-02:75-76行 | ○ |
| C-20 | +snippets--snippet-mode-name-completing-readはmajor-modeをデフォルト | E-02:77行 | ○ |
| C-21 | +snippet--abortはバッファを変更なしでkill | E-02:79-82行 | ○ |
| C-22 | +snippet--editはUUID設定時に編集を開始 | E-02:85-90行 | ○ |
| C-23 | +snippet--editはUUID未設定で何もしない | E-02:87行 when条件 | ○ |

### snippets.el - コマンド
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-24 | +snippets/goto-start-of-fieldはフィールド先頭に移動 | E-02:97-107行 | ○ |
| C-25 | +snippets/goto-start-of-fieldは先頭時に行頭に移動 | E-02:105-106行 | ○ |
| C-26 | +snippets/goto-start-of-fieldはフィールドなしでもエラーなし | E-02:102-106行 position=-1 | ○ |
| C-27 | +snippets/goto-end-of-fieldはフィールド末尾に移動 | E-02:110-120行 | ○ |
| C-28 | +snippets/goto-end-of-fieldは末尾時に行末に移動 | E-02:118-119行 | ○ |
| C-29 | +snippets/delete-backward-charはフィールド内で後方削除 | E-02:123-131行 | ○ |
| C-30 | +snippets/delete-backward-charはフィールド先頭で削除抑制 | E-02:129-130行 | ○ |
| C-31 | +snippets/delete-backward-charはフィールドなしで通常削除 | E-02:129行 unless条件 | ○ |
| C-32 | +snippets/delete-forward-char-or-fieldはフィールド内で前方削除 | E-02:134-148行 | ○ |
| C-33 | +snippets/delete-forward-char-or-fieldは空フィールドでスキップ | E-02:143-146行 | ○ |
| C-34 | +snippets/delete-forward-char-or-fieldはフィールド末尾で抑制 | E-02:147行 | ○ |
| C-35 | +snippets/delete-forward-char-or-fieldはフィールドなしで通常削除 | E-02:141-142行 | ○ |
| C-36 | +snippets/delete-to-start-of-fieldはフィールド先頭まで削除 | E-02:151-161行 | ○ |
| C-37 | +snippets/delete-to-start-of-fieldは先頭時に何もしない | E-02:160行 > (point) sof | ○ |
| C-38 | +snippets/delete-to-start-of-fieldはフィールドなしで何もしない | E-02:158行 when条件 | ○ |
| C-39 | +snippets/findはスニペットファイルを開く | E-02:164-180行 | ○ |
| C-40 | +snippets/findはビルトインでread-only有効 | E-02:177-179行 | ○ |
| C-41 | +snippets/findは読み取り不可でエラー | E-02:174-175行 | ○ |
| C-42 | +snippets/find-privateはプライベートディレクトリで検索 | E-02:183-186行 | ○ |
| C-43 | +snippets/find-for-current-modeは現在モードのスニペットを開く | E-02:189-204行 | ○ |
| C-44 | +snippets/find-for-current-modeはテンプレート未検出でエラー | E-02:204行 | ○ |
| C-45 | +snippets/newは新規スニペットバッファを作成 | E-02:207-230行 | ○ |
| C-46 | +snippets/newはall-modesでモード選択可能 | E-02:212-213行 | ○ |
| C-47 | +snippets/newはevil時にinsert-state | E-02:229-230行 | ○ |
| C-48 | +snippets/new-aliasはエイリアスを作成 | E-02:233-262行 | ○ |
| C-49 | +snippets/new-aliasはdoom-snippetsなしでエラー | E-02:241-242行 | ○ |
| C-50 | +snippets/editはプライベートを直接編集 | E-02:265-279行 | ○ |
| C-51 | +snippets/editはビルトインのコピーを作成 | E-02:280-288行 | ○ |
| C-52 | +snippets/editはテンプレート未検出でエラー | E-02:289行 | ○ |
| C-53 | +snippets-show-hints-in-header-line-hはヒントを表示 | E-02:292-297行 | ○ |

### snippets.el - フック・アドバイス
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | +snippets-enable-project-modes-hはモード有効時に追加 | E-02:304-309行 | ○ |
| C-55 | +snippets-enable-project-modes-hはモード無効時に削除 | E-02:307-309行 | ○ |
| C-56 | +snippets-read-only-maybe-hはビルトインでread-only | E-02:312-316行 | ○ |
| C-57 | +snippets-read-only-maybe-hはプライベートで編集可能 | E-02:314行 when条件 | ○ |
| C-58 | +snippets-expand-on-region-aは非evilでfnをそのまま実行 | E-02:323-330行 | ○ |
| C-59 | +snippets-expand-on-region-aはevilで空白をトリム | E-02:333-344行 | ○ |
| C-60 | +snippets-expand-on-region-aは展開後にinsert-state | E-02:345-349行 | ○ |

### settings.el
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | set-yas-minor-mode!は単一モードを登録 | E-03:4-10行 | ○ |
| C-62 | set-yas-minor-mode!は複数モードをリストで登録 | E-03:7行 ensure-list | ○ |
| C-63 | set-yas-minor-mode!のフックはyas-activate-extra-modeを呼ぶ | E-03:9行 | ○ |

### config.el
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | +snippets-dirはdoom-user-dir/snippets/に設定 | E-01:3-4行 | ○ |
| C-65 | +snippets--remove-duplicates-aは重複を削除 | E-01:90-92行 | ○ |
| C-66 | +snippets--remove-duplicates-aは空リストを処理 | E-01:92行 cl-delete-duplicates | ○ |
| C-67 | +snippets--disable-smartparens-before-expand-hはsmartparensを無効化 | E-01:101-109行 | ○ |
| C-68 | +snippets--disable-smartparens-before-expand-hはネスト時に状態保持 | E-01:105-107行 | ○ |
| C-69 | +snippets--restore-smartparens-after-expand-hはsmartparensを復元 | E-01:113-117行 | ○ |
| C-70 | +snippets--restore-smartparens-after-expand-hは元々無効なら復元しない | E-01:116行 when条件 | ○ |
| C-71 | +snippets--inhibit-yas-global-mode-aはyas-minor-modeに置換 | E-01:127-134行 | ○ |

## 4) 不足情報（Unknown / Missing）
- 根拠なしの項目はありません。
- 全てのテストケースはソースコードの関数定義に基づいて作成されています。

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 全てのテストケースがソースコードに直接基づいている
- 外部依存（yasnippet, smartparens, evil）のモック実装が必要
- Emacs Lisp特有のマクロ（letf!, defadvice!）のテスト方法を検討する必要あり

## 6) レビュアーチェックリスト（最小）
- [ ] UT-SNP-004〜006: プライベートスニペット優先ロジックの条件分岐が網羅されているか
- [ ] UT-SNP-029〜038: フィールド操作の境界条件が適切か
- [ ] UT-SNP-058〜060: Evil統合のregion処理が正しくテストされているか
- [ ] UT-SNP-067〜070: smartparens干渉防止の状態管理が適切か
- [ ] 各autoload関数に対して正常系・異常系・境界値のテストケースが存在するか
- [ ] 依存パッケージ（yasnippet, evil, smartparens）のモック方針が決定されているか
