---
generated_at: 2026-02-19 12:30:00
metrics:
  claims_total: 56
  claims_with_evidence: 56
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：56 / 56、根拠なし：0
- 優先レビュー（高）
  1. **UT-CMP-001〜005**: `set-company-backend!`関数のテストケース - バックエンド設定の基本機能として重要
  2. **UT-CMP-006〜010**: `+company--backends`関数のテストケース - バックエンド取得ロジックの検証
  3. **UT-CMP-022〜024**: `+company/complete`コマンドのテストケース - 補完実行の基本機能

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

- E-01: `modules/completion/company/autoload.el` - autoload関数・変数定義ファイル
- E-02: `modules/completion/company/config.el` - パッケージ設定・フック定義ファイル
- E-03: `modules/completion/company/packages.el` - パッケージ依存関係定義ファイル
- E-04: `modules/completion/company/.doommodule` - モジュール定義ファイル

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

### set-company-backend! 関数 (autoload.el:12-39)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 単一モードに単一バックエンドを設定できる | E-01 (行12-39: set-company-backend!定義) | ○ |
| C-02 | 単一モードに複数バックエンドを設定できる | E-01 (行22-29: docstringの使用例) | ○ |
| C-03 | 複数モードに同じバックエンドを設定できる | E-01 (行28-29: 使用例, 行33: dolistでモード反復) | ○ |
| C-04 | nilを渡すとバックエンド設定が解除される | E-01 (行34-37: nilチェックとdelq処理) | ○ |
| C-05 | 連続呼び出しで上書きされる | E-01 (行38-39: setfでalist-get上書き) | ○ |

### +company--backends 関数 (autoload.el:45-61)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-06 | メジャーモード対応バックエンドが返される | E-01 (行52-53: assqでモード検索) | ○ |
| C-07 | 派生モードの親モードバックエンドも含まれる | E-01 (行49-51: derived-mode-parentを辿る) | ○ |
| C-08 | マイナーモードのバックエンドも含まれる | E-01 (行58-59: boundpとsymbol-valueチェック) | ○ |
| C-09 | 重複バックエンドが除去される | E-01 (行55: delete-dups呼び出し) | ○ |
| C-10 | デフォルトバックエンドが含まれる | E-01 (行53: default-value 'company-backends) | ○ |

### +company-init-backends-h 関数 (autoload.el:67-75)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | 通常バッファでcompany-backendsが設定される | E-01 (行73: setq-local company-backends) | ○ |
| C-12 | fundamental-modeでは設定されない | E-01 (行70: memq major-mode除外リスト) | ○ |
| C-13 | special-modeでは設定されない | E-01 (行70: memq major-mode除外リスト) | ○ |
| C-14 | 読み取り専用バッファでは設定されない | E-01 (行71: buffer-read-onlyチェック) | ○ |
| C-15 | 一時バッファでは設定されない | E-01 (行72: doom-temp-buffer-pチェック) | ○ |

### +company-has-completion-p 関数 (autoload.el:81-87)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | 補完候補1件でnon-nil返却 | E-01 (行87: = company-candidates-length 1) | ○ |
| C-17 | 補完候補なしでnil返却 | E-01 (行87: =の結果がnil) | ○ |
| C-18 | company-mode無効時nil返却 | E-01 (行84: when company-mode) | ○ |

### +company/toggle-auto-completion 関数 (autoload.el:89-96)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | 自動補完が有効化される | E-01 (行94: unless company-idle-delay で 0.2設定) | ○ |
| C-20 | 自動補完が無効化される | E-01 (行94: company-idle-delayがあればnil) | ○ |
| C-21 | トグル状態がメッセージ表示される | E-01 (行95-96: message関数呼び出し) | ○ |

### +company/complete 関数 (autoload.el:98-109)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | 補完候補が表示される | E-01 (行107: company-manual-begin呼び出し) | ○ |
| C-23 | 候補1件で自動補完 | E-01 (行108-109: = 1でcompany-complete-common) | ○ |
| C-24 | シンボル境界でスペース挿入 | E-01 (行103-106: bounds-of-thing-at-point比較) | ○ |

### +company/dabbrev 関数 (autoload.el:111-119)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | prog-modeでcompany-dabbrev-code呼出 | E-01 (行117-118: derived-mode-p分岐) | ○ |
| C-26 | 非prog-modeでcompany-dabbrev呼出 | E-01 (行119: else節) | ○ |

### +company/whole-lines 関数 (autoload.el:121-139)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | interactiveでバックエンド開始 | E-01 (行128: `interactive節) | ○ |
| C-28 | プレフィックス取得 | E-01 (行129: company-grab-line) | ○ |
| C-29 | バッファ行が候補として返される | E-01 (行130-139: candidates節) | ○ |
| C-30 | 現在行を除いた候補 | E-01 (行137-138: point-min〜line-beginning, line-end〜point-max) | ○ |
| C-31 | 重複行が纏められる | E-01 (行133: delete-dups) | ○ |

### +company/dict-or-keywords 関数 (autoload.el:141-148)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | dict+keywordsが組み合わされる | E-01 (行147: let company-backends) | ○ |

### +company/dabbrev-code-previous 関数 (autoload.el:150-157)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | dabbrev後に前候補選択 | E-01 (行156-157: 呼び出し順序) | ○ |
| C-34 | 選択がラップアラウンド | E-01 (行155: company-selection-wrap-around=t) | ○ |

### +company/completing-read 関数 (autoload.el:159-172)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | ivy有効時counsel-company呼出 | E-01 (行165-166: cond条件) | ○ |
| C-36 | helm有効時helm-company呼出 | E-01 (行167-168: cond条件) | ○ |
| C-37 | フォールバックでcompleting-read | E-01 (行171-172: when-let completing-read) | ○ |
| C-38 | 候補なしでエラー | E-01 (行169-170: user-error) | ○ |

### +company-abort-h 関数 (config.el:54-60)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | 候補あり時にabort呼出 | E-02 (行59-60: when company-candidates) | ○ |
| C-40 | 候補なし時はabort不呼出 | E-02 (行59: whenガード) | ○ |

### +company--abort-previous-a アドバイス (config.el:64-66)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | begin-backend前にabort呼出 | E-02 (行64-66: :before advice) | ○ |

### +company-box-icons--elisp-fn 関数 (config.el:157-163)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | 関数にElispFunction返却 | E-02 (行160: fboundpチェック) | ○ |
| C-43 | 変数にElispVariable返却 | E-02 (行161: boundpチェック) | ○ |
| C-44 | フィーチャにElispFeature返却 | E-02 (行162: featurepチェック) | ○ |
| C-45 | フェイスにElispFace返却 | E-02 (行163: facepチェック) | ○ |
| C-46 | 非emacs-lisp-modeでnil | E-02 (行158: derived-mode-pガード) | ○ |

### +company-box-detect-deleted-frame-a アドバイス (config.el:168-170)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | 生存フレームはそのまま返却 | E-02 (行170: if frame-live-p frame) | ○ |
| C-48 | 削除済みフレームはnil | E-02 (行170: else暗黙nil) | ○ |

### +company-box-detect-deleted-doc-frame-a アドバイス (config.el:171-176)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | 削除済みdoc-frameをnilリセット | E-02 (行175-176: frame-local-setq nil) | ○ |
| C-50 | 有効doc-frameは変更なし | E-02 (行175: not frame-live-p条件) | ○ |

### +company-enable-project-dicts-h 関数 (config.el:183-188)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | モード有効時にリスト追加 | E-02 (行186-187: if symbol-value add-to-list) | ○ |
| C-52 | モード無効時にリスト削除 | E-02 (行188: setq delq) | ○ |
| C-53 | 重複追加されない | E-02 (行187: add-to-list #'eq) | ○ |

### +company-backend-alist 変数 (autoload.el:4-8)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | text-modeデフォルト設定 | E-01 (行5: text-modeエントリ) | ○ |
| C-55 | prog-modeデフォルト設定 | E-01 (行6: prog-modeエントリ) | ○ |
| C-56 | conf-modeデフォルト設定 | E-01 (行7: conf-modeエントリ) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースはソースコードに基づいて生成されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全てのテストケースに明確なソースコード根拠が存在
- 注意点:
  - Emacs Lispの動的特性により、実行時の状態に依存するテストがある
  - evil-modeとの連携テストはevil-modeが有効な環境が必要
  - company-boxのテストはGUIフレームが必要

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースのカバレッジは十分か（正常系・異常系・境界値）
- [ ] 優先度の設定は適切か
- [ ] 前提条件が明確に記述されているか
- [ ] 期待結果が検証可能な形で記述されているか
- [ ] Emacs Lisp固有の関数・マクロ（defadvice!, add-hook!等）の動作理解が正しいか
- [ ] doom-emacsフレームワーク固有の機能（modulep!, doom-temp-buffer-p等）を考慮しているか
