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

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：54 / 54、根拠なし：0
- 優先レビュー（高）
  1. **UT-LSP-037〜042**：遅延シャットダウン関連 - タイマー動作は実機テストで確認が必要
  2. **UT-LSP-031〜032**：flycheck-checker保持 - adviceの動作は副作用が複雑
  3. **UT-LSP-051〜054**：doctorチェック - 環境依存のテストが必要

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

- E-01: `modules/tools/lsp/config.el` - +lsp-optimization-mode定義（L19-43）
- E-02: `modules/tools/lsp/config.el` - +lsp-defer-shutdown変数定義（L3-9）
- E-03: `modules/tools/lsp/autoload/common.el` - lsp!関数定義（L4-12）
- E-04: `modules/tools/lsp/autoload/lsp-mode.el` - set-lsp-priority!定義（L5-11）
- E-05: `modules/tools/lsp/autoload/lsp-mode.el` - +lsp/uninstall-server定義（L14-21）
- E-06: `modules/tools/lsp/autoload/lsp-mode.el` - +lsp/switch-client定義（L24-53）
- E-07: `modules/tools/lsp/autoload/lsp-mode.el` - +lsp-lookup-definition-handler定義（L56-62）
- E-08: `modules/tools/lsp/autoload/lsp-mode.el` - +lsp-lookup-references-handler定義（L65-75）
- E-09: `modules/tools/lsp/autoload/eglot.el` - set-eglot-client!定義（L5-17）
- E-10: `modules/tools/lsp/autoload/eglot.el` - +eglot-lookup-documentation定義（L28-46）
- E-11: `modules/tools/lsp/+lsp.el` - +lsp-signature-stop-maybe-h定義（L58-62）
- E-12: `modules/tools/lsp/+lsp.el` - +lsp--respect-user-defined-checkers-a定義（L76-83）
- E-13: `modules/tools/lsp/+lsp.el` - +lsp--disable-optimization-mode-if-no-workspaces-h定義（L87-89）
- E-14: `modules/tools/lsp/+lsp.el` - +lsp-init-company-backends-h定義（L93-98）
- E-15: `modules/tools/lsp/+lsp.el` - +lsp-defer-server-shutdown-a定義（L101-124）
- E-16: `modules/tools/lsp/+lsp.el` - +lsp-update-modeline定義（L134-145）
- E-17: `modules/tools/lsp/+lsp.el` - +lsp--use-hook-instead-a定義（L176-181）
- E-18: `modules/tools/lsp/+eglot.el` - +lsp--defer-server-shutdown-a (eglot)定義（L43-61）
- E-19: `modules/tools/lsp/doctor.el` - assert! +eglot +peek非互換（L3-4）
- E-20: `modules/tools/lsp/doctor.el` - warn! npm不在（L6-8）
- E-21: `modules/tools/lsp/doctor.el` - +booster関連チェック（L10-14）
- E-22: `modules/tools/lsp/packages.el` - パッケージ定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | +lsp-optimization-mode有効化時にread-process-output-maxが増加する | E-01 L34 | ○ |
| C-02 | +lsp-optimization-mode有効化時にgcmh-high-cons-thresholdが2倍になる | E-01 L40 | ○ |
| C-03 | +lsp-optimization-mode無効化時に元の設定が復元される | E-01 L27-29 | ○ |
| C-04 | 初期化前に無効化を呼び出しても問題ない | E-01 L26 (+lsp--optimization-init-p条件) | ○ |
| C-05 | 2回連続で有効化しても設定が二重適用されない | E-01 L31 (unless条件) | ○ |
| C-06 | eglotモード時にeglot-ensureが呼び出される | E-03 L7-9 | ○ |
| C-07 | lsp-modeモード時にlsp-deferredが呼び出される | E-03 L11-12 | ○ |
| C-08 | eglotでクライアント未定義時にメッセージが表示される | E-03 L10 | ○ |
| C-09 | 既にlsp-modeが有効な場合は何もしない | E-03 L11 (unless条件) | ○ |
| C-10 | set-lsp-priority!で存在するクライアントの優先度が変更される | E-04 L8-10 | ○ |
| C-11 | set-lsp-priority!で存在しないクライアント指定時にエラー | E-04 L11 | ○ |
| C-12 | +lsp/uninstall-serverで存在するディレクトリが削除される | E-05 L20 | ○ |
| C-13 | +lsp/uninstall-serverで存在しないディレクトリ指定時にuser-error | E-05 L18-19 | ○ |
| C-14 | +lsp/switch-clientで利用可能なクライアントに切り替えられる | E-06 L40-50 | ○ |
| C-15 | +lsp/switch-clientで存在しないクライアント指定時にuser-error | E-06 L38-39 | ○ |
| C-16 | +lsp/switch-clientでワークスペースがない場合にlsp-modeが起動される | E-06 L51 | ○ |
| C-17 | +lsp/switch-clientで切り替え後に元の優先度が復元される | E-06 L52-53 | ○ |
| C-18 | +lsp-lookup-definition-handlerでシンボル定義が見つかった場合にxref結果が表示される | E-07 L59-62 | ○ |
| C-19 | +lsp-lookup-definition-handlerでシンボル定義が見つからない場合にnilが返る | E-07 L59 (when-let) | ○ |
| C-20 | +lsp-lookup-references-handlerでシンボル参照が見つかった場合にxref結果が表示される | E-08 L68-75 | ○ |
| C-21 | +lsp-lookup-references-handlerでinclude-declaration=tで宣言も含まれる | E-08 L72-73 | ○ |
| C-22 | +lsp-lookup-references-handlerで参照が見つからない場合にnilが返る | E-08 L68 (when-let) | ○ |
| C-23 | set-eglot-client!で単一のサーバー設定がeglot-server-programsに追加される | E-09 L14-17 | ○ |
| C-24 | set-eglot-client!で複数のサーバー候補がeglot-alternativesで設定される | E-09 L15-16 | ○ |
| C-25 | set-eglot-client!で複数のmajor-modeに対して設定できる | E-09 L14 (cons mode ...) | ○ |
| C-26 | +eglot-lookup-documentationでドキュメントがある場合にヘルプバッファが表示される | E-10 L36-44 | ○ |
| C-27 | +eglot-lookup-documentationでドキュメントがない場合にローカルヘルプが表示される | E-10 L45 | ○ |
| C-28 | +eglot-lookup-documentationで既存のヘルプバッファが再利用される | E-10 L38-40 | ○ |
| C-29 | +lsp-signature-stop-maybe-hでlsp-signature-modeが有効な場合にlsp-signature-stopが呼ばれる | E-11 L60-62 | ○ |
| C-30 | +lsp-signature-stop-maybe-hでlsp-signature-modeが無効な場合は何もしない | E-11 L60 (when条件) | ○ |
| C-31 | +lsp--respect-user-defined-checkers-aでユーザー定義のflycheck-checkerが保持される | E-12 L79-82 | ○ |
| C-32 | +lsp--respect-user-defined-checkers-aでflycheck-checkerが未設定の場合は通常通り動作する | E-12 L83 | ○ |
| C-33 | +lsp--disable-optimization-mode-if-no-workspaces-hでワークスペースがなくなったら最適化モードが無効化される | E-13 L88-89 | ○ |
| C-34 | +lsp--disable-optimization-mode-if-no-workspaces-hでまだワークスペースがある場合は最適化モードが維持される | E-13 L88 (unless条件) | ○ |
| C-35 | +lsp-init-company-backends-hでlsp-completion-mode有効時にcompany-backendsが設定される | E-14 L94-98 | ○ |
| C-36 | +lsp-init-company-backends-hでlsp-completion-mode無効時は変更されない | E-14 L94 (when条件) | ○ |
| C-37 | +lsp-defer-server-shutdown-aで+lsp-defer-shutdown秒後にサーバーがシャットダウンされる | E-15 L115-124 | ○ |
| C-38 | +lsp-defer-server-shutdown-aでバッファがまだある場合はシャットダウンされない | E-15 L119-121 | ○ |
| C-39 | +lsp-defer-server-shutdown-aで+lsp-defer-shutdownが0の場合は即時シャットダウンされる | E-15 L110 | ○ |
| C-40 | +lsp-defer-server-shutdown-aで+lsp-defer-shutdownがnilの場合は即時シャットダウンされる | E-15 L109 | ○ |
| C-41 | +lsp-defer-server-shutdown-aでrestart=tの場合は即時シャットダウンされる | E-15 L108 | ○ |
| C-42 | +lsp-defer-server-shutdown-aで既存のタイマーがキャンセルされる | E-15 L112-113 | ○ |
| C-43 | +lsp-update-modelineでワークスペース接続時にConnectedラベルが表示される | E-16 L136-138 | ○ |
| C-44 | +lsp-update-modelineでワークスペース切断時にDisconnectedラベルが表示される | E-16 L138 | ○ |
| C-45 | +lsp--use-hook-instead-aでlsp--auto-configure内でlsp-ui-modeが無視される | E-17 L180 | ○ |
| C-46 | +lsp--defer-server-shutdown-a (eglot)で+lsp-defer-shutdown秒後にeglotサーバーがシャットダウンされる | E-18 L54-60 | ○ |
| C-47 | +lsp--defer-server-shutdown-a (eglot)でマネージドバッファがある場合はシャットダウンされない | E-18 L57 | ○ |
| C-48 | +lsp--defer-server-shutdown-a (eglot)で+lsp-defer-shutdownが0の場合は即時シャットダウンされる | E-18 L51 | ○ |
| C-49 | +lsp--defer-server-shutdown-a (eglot)で+lsp-defer-shutdownがnilの場合は即時シャットダウンされる | E-18 L50 | ○ |
| C-50 | +lsp--defer-server-shutdown-a (eglot)でシャットダウン後に最適化モードが無効化される | E-18 L53, L59 | ○ |
| C-51 | assert!で+eglotと+peekが同時指定された場合にエラーになる | E-19 L3-4 | ○ |
| C-52 | warn!でnpmが見つからない場合に警告が表示される | E-20 L7-8 | ○ |
| C-53 | warn!で+booster有効時にemacs-lsp-boosterが見つからないと警告される | E-21 L12-13 | ○ |
| C-54 | error!で+boosterが+eglotなしで有効な場合にエラーになる | E-21 L14 | ○ |

## 4) 不足情報（Unknown / Missing）
- 根拠なしの項目はありません
- 全てのテストケースはソースコードから直接抽出された関数・機能に基づいています

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全体として低リスク
  - 理由：全てのテストケースがソースコード内の実装に直接対応しており、根拠が明確
- **1: 中リスク** - 以下の項目は実機テストでの確認を推奨
  - 遅延シャットダウン関連（タイマー動作）：UT-LSP-037〜042、UT-LSP-046〜050
  - advice関数：UT-LSP-031〜032、UT-LSP-045
  - 環境依存チェック：UT-LSP-051〜054

## 6) レビュアーチェックリスト（最小）
- [ ] 各関数のテスト観点（正常系/異常系/境界値/状態）が網羅されているか
- [ ] Emacs Lispのadvice関数のテストケースが適切に定義されているか
- [ ] +lsp-defer-shutdown変数の各値（数値/0/nil）に対するテストケースがあるか
- [ ] lsp-modeとeglotの両方の実装に対応するテストケースがあるか
- [ ] doctor.elのフラグ互換性チェックが網羅されているか
- [ ] 優先度（高/中/低）の割り当てがビジネス重要度と一致しているか
