---
generated_at: 2026-02-20 01:00:00
metrics:
  claims_total: 121
  claims_with_evidence: 115
  claims_without_evidence: 6
confidence_derived: 0.95
---

# 根拠レポート：dcd.csv（dcdモジュール単体テストケース一覧）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：115 / 121、根拠なし：6
- 優先レビュー（高）
  1. **UT-DCD-053, UT-DCD-054**：デフォルトコンストラクタのプラットフォーム別挙動（実行環境依存のため検証困難）
  2. **UT-DCD-007, UT-DCD-064**：usingUnixDomainSocketsのプラットフォーム別戻り値（version分岐のためコンパイル時に決定）
  3. **UT-DCD-094**：空文字列クエリのシンボル検索（サーバー側の挙動が不明）
  4. **UT-DCD-032**：ExternalDCDClient.requestInlayHintsのkind列空文字列処理（コード上splits[0]を参照しているがsplits[1]を使用するロジックとの不整合の可能性）

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `dcd/source/served/dcd/client.d` - IDCDClientインターフェース定義（行33-53）
- E-02: `dcd/source/served/dcd/client.d` - ExternalDCDClientクラス定義（行55-383）
- E-03: `dcd/source/served/dcd/client.d` - BuiltinDCDClientクラス定義（行385-629）
- E-04: `dcd/source/served/dcd/client.d` - CodeRequest構造体定義（行631-646）
- E-05: `dcd/source/served/dcd/client.d` - SymbolInformation構造体定義（行648-658）
- E-06: `dcd/source/served/dcd/client.d` - Completion構造体定義（行660-670）
- E-07: `dcd/source/served/dcd/client.d` - LocalUse構造体定義（行672-684）
- E-08: `dcd/source/served/dcd/client.d` - InlayHint構造体定義（行686-691）
- E-09: `dcd/source/served/dcd/client.d` - unescapeTabs関数定義（行693-735）
- E-10: `dcd/source/served/dcd/client.d` - unescapeTabsユニットテスト（行737-743）
- E-11: `dcd/source/served/dcd/client.d` - publicインポート再エクスポート（行26）
- E-12: `dcd/source/served/dcd/client.d` - platformSupportsDCDUnixSockets定数（行28-31）
- E-13: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト情報とモジュール定義

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

### ExternalDCDClient コンストラクタ・プロパティ（UT-DCD-001 〜 UT-DCD-007）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-DCD-001: 有効なclientPathでインスタンス生成 | E-02（行61-64） | ○ |
| C-02 | UT-DCD-002: 空文字列のclientPathでインスタンス生成 | E-02（行61-64） | ○ |
| C-03 | UT-DCD-003: socketFile getterが初期値を返す | E-02（行66-69） | ○ |
| C-04 | UT-DCD-004: socketFile setterに値を設定 | E-02（行71-74） | ○ |
| C-05 | UT-DCD-005: runningPort getterが初期値を返す | E-02（行76-79） | ○ |
| C-06 | UT-DCD-006: runningPort setterに値を設定 | E-02（行81-84） | ○ |
| C-07 | UT-DCD-007: usingUnixDomainSocketsのプラットフォーム依存 | E-02（行86-92）, E-12 | △ |

### ExternalDCDClient コマンド操作（UT-DCD-008 〜 UT-DCD-021）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | UT-DCD-008: queryRunning成功時にtrue | E-02（行94-97） | ○ |
| C-09 | UT-DCD-009: queryRunning失敗時にfalse | E-02（行94-97） | ○ |
| C-10 | UT-DCD-010: shutdown成功時にtrue | E-02（行99-102） | ○ |
| C-11 | UT-DCD-011: shutdown失敗時にfalse | E-02（行99-102） | ○ |
| C-12 | UT-DCD-012: clearCache成功時にtrue | E-02（行104-107） | ○ |
| C-13 | UT-DCD-013: clearCache失敗時にfalse | E-02（行104-107） | ○ |
| C-14 | UT-DCD-014: addImportPathsで有効パス追加 | E-02（行109-116） | ○ |
| C-15 | UT-DCD-015: addImportPathsで空配列 | E-02（行109-116） | ○ |
| C-16 | UT-DCD-016: addImportPathsで空文字列スキップ | E-02（行112-114） | ○ |
| C-17 | UT-DCD-017: removeImportPathsで有効パス削除 | E-02（行118-125） | ○ |
| C-18 | UT-DCD-018: removeImportPathsで空配列 | E-02（行118-125） | ○ |
| C-19 | UT-DCD-019: removeImportPathsで空文字列スキップ | E-02（行121-123） | ○ |
| C-20 | UT-DCD-020: listImportPathsで一覧取得 | E-02（行127-142） | ○ |
| C-21 | UT-DCD-021: listImportPathsで空配列 | E-02（行127-142） | ○ |

### ExternalDCDClient リクエスト処理（UT-DCD-022 〜 UT-DCD-051）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | UT-DCD-022: requestSymbolInfo正常系 | E-02（行144-168） | ○ |
| C-23 | UT-DCD-023: requestSymbolInfo空行でinit返却 | E-02（行157-158） | ○ |
| C-24 | UT-DCD-024: requestSymbolInfoタブ区切り不正でinit返却 | E-02（行159-161） | ○ |
| C-25 | UT-DCD-025: requestSymbolInfoのstdin置換 | E-02（行164-165） | ○ |
| C-26 | UT-DCD-026: requestDocumentation正常系 | E-02（行170-188） | ○ |
| C-27 | UT-DCD-027: requestDocumentation空配列 | E-02（行170-188） | ○ |
| C-28 | UT-DCD-028: requestDocumentationのunescapeTabs適用 | E-02（行185）, E-09 | ○ |
| C-29 | UT-DCD-029: requestInlayHints正常系 | E-02（行190-217） | ○ |
| C-30 | UT-DCD-030: requestInlayHints空配列 | E-02（行190-217） | ○ |
| C-31 | UT-DCD-031: requestInlayHints不正行スキップ | E-02（行207） | ○ |
| C-32 | UT-DCD-032: requestInlayHintsのkind空文字列処理 | E-02（行210） | △ |
| C-33 | UT-DCD-033: requestSymbolSearch正常系 | E-02（行219-246） | ○ |
| C-34 | UT-DCD-034: requestSymbolSearch空配列 | E-02（行219-246） | ○ |
| C-35 | UT-DCD-035: requestSymbolSearch不正行スキップ | E-02（行235） | ○ |
| C-36 | UT-DCD-036: requestSymbolSearchのidentifierハック | E-02（行238） | ○ |
| C-37 | UT-DCD-037: requestLocalUse正常系 | E-02（行248-281） | ○ |
| C-38 | UT-DCD-038: requestLocalUseヘッダー00000 | E-02（行263） | ○ |
| C-39 | UT-DCD-039: requestLocalUseヘッダー空 | E-02（行263） | ○ |
| C-40 | UT-DCD-040: requestLocalUseヘッダー要素不足 | E-02（行268-269） | ○ |
| C-41 | UT-DCD-041: requestLocalUse使用箇所0件 | E-02（行273-279） | ○ |
| C-42 | UT-DCD-042: requestAutocomplete正常系 | E-02（行283-353） | ○ |
| C-43 | UT-DCD-043: requestAutocomplete結果0件 | E-02（行308-312） | ○ |
| C-44 | UT-DCD-044: requestAutocomplete identifiers型パース | E-02（行315-349） | ○ |
| C-45 | UT-DCD-045: requestAutocomplete calltips型パース | E-02（行315-316） | ○ |
| C-46 | UT-DCD-046: requestAutocompleteタブ区切り不足スキップ | E-02（行322-323） | ○ |
| C-47 | UT-DCD-047: requestAutocomplete location解析スペースあり | E-02（行327-335） | ○ |
| C-48 | UT-DCD-048: requestAutocomplete location解析スペースなし | E-02（行336-337） | ○ |
| C-49 | UT-DCD-049: requestAutocomplete typeOf設定 | E-02（行345-346） | ○ |
| C-50 | UT-DCD-050: clientArgsのUnix環境分岐 | E-02（行356-362） | ○ |
| C-51 | UT-DCD-051: clientArgsのWindows環境分岐 | E-02（行356-362） | ○ |

### BuiltinDCDClient コンストラクタ・プロパティ（UT-DCD-052 〜 UT-DCD-064）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | UT-DCD-052: デフォルトコンストラクタ | E-03（行399-409） | ○ |
| C-53 | UT-DCD-053: Unix環境でのデフォルトコンストラクタ | E-03（行401-403） | △ |
| C-54 | UT-DCD-054: Windows環境でのデフォルトコンストラクタ | E-03（行405-408） | △ |
| C-55 | UT-DCD-055: ソケットファイル指定コンストラクタ | E-03（行411-416） | ○ |
| C-56 | UT-DCD-056: ポート指定コンストラクタ | E-03（行418-423） | ○ |
| C-57 | UT-DCD-057: socketFile getter | E-03（行425-428） | ○ |
| C-58 | UT-DCD-058: socketFile setter | E-03（行430-438） | ○ |
| C-59 | UT-DCD-059: socketFile setterでuseTCP切り替え | E-03（行432-435） | ○ |
| C-60 | UT-DCD-060: socketFile setter空文字列 | E-03（行434） | ○ |
| C-61 | UT-DCD-061: runningPort getter | E-03（行440-443） | ○ |
| C-62 | UT-DCD-062: runningPort setterでuseTCP切り替え | E-03（行445-449） | ○ |
| C-63 | UT-DCD-063: runningPort setter値0 | E-03（行447） | ○ |
| C-64 | UT-DCD-064: usingUnixDomainSocketsプラットフォーム依存 | E-03（行452-458）, E-12 | △ |

### BuiltinDCDClient 接続管理（UT-DCD-065 〜 UT-DCD-078）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 | UT-DCD-065: queryRunning成功時 | E-03（行460-463） | ○ |
| C-66 | UT-DCD-066: queryRunning失敗時 | E-03（行460-463） | ○ |
| C-67 | UT-DCD-067: connectForRequest TCP接続 | E-03（行476-479） | ○ |
| C-68 | UT-DCD-068: connectForRequest Unix接続 | E-03（行483-487） | ○ |
| C-69 | UT-DCD-069: ソケットオプション設定 | E-03（行495-497） | ○ |
| C-70 | UT-DCD-070: 接続失敗時のMutex解放 | E-03（行468-472） | ○ |
| C-71 | UT-DCD-071: 二重接続のassert | E-03（行474） | ○ |
| C-72 | UT-DCD-072: closeRequestConnection正常 | E-03（行501-511） | ○ |
| C-73 | UT-DCD-073: closeRequestConnectionのscope(exit)保証 | E-03（行503-507） | ○ |
| C-74 | UT-DCD-074: performNotification正常 | E-03（行513-520） | ○ |
| C-75 | UT-DCD-075: performNotification失敗 | E-03（行519） | ○ |
| C-76 | UT-DCD-076: performRequest正常 | E-03（行522-539） | ○ |
| C-77 | UT-DCD-077: performRequest送信失敗例外 | E-03（行528-529） | ○ |
| C-78 | UT-DCD-078: performRequestレスポンス取得失敗 | E-03（行535-538） | ○ |

### BuiltinDCDClient リクエスト処理（UT-DCD-079 〜 UT-DCD-098）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | UT-DCD-079: shutdown処理 | E-03（行541-546） | ○ |
| C-80 | UT-DCD-080: clearCache処理 | E-03（行548-553） | ○ |
| C-81 | UT-DCD-081: addImportPaths正常 | E-03（行555-561） | ○ |
| C-82 | UT-DCD-082: addImportPaths空配列 | E-03（行555-561） | ○ |
| C-83 | UT-DCD-083: removeImportPaths正常 | E-03（行563-569） | ○ |
| C-84 | UT-DCD-084: removeImportPaths空配列 | E-03（行563-569） | ○ |
| C-85 | UT-DCD-085: listImportPaths | E-03（行571-576） | ○ |
| C-86 | UT-DCD-086: requestSymbolInfo正常 | E-03（行578-584） | ○ |
| C-87 | UT-DCD-087: requestSymbolInfoのapply連携 | E-03（行582）, E-04 | ○ |
| C-88 | UT-DCD-088: requestDocumentation正常 | E-03（行586-592） | ○ |
| C-89 | UT-DCD-089: requestDocumentation空配列 | E-03（行591） | ○ |
| C-90 | UT-DCD-090: requestInlayHints正常 | E-03（行594-604） | ○ |
| C-91 | UT-DCD-091: requestInlayHints空配列 | E-03（行599） | ○ |
| C-92 | UT-DCD-092: requestSymbolSearch正常 | E-03（行606-612） | ○ |
| C-93 | UT-DCD-093: requestSymbolSearch空配列 | E-03（行611） | ○ |
| C-94 | UT-DCD-094: requestSymbolSearch空クエリ | E-03（行609） | △ |
| C-95 | UT-DCD-095: requestLocalUse正常 | E-03（行614-619） | ○ |
| C-96 | UT-DCD-096: requestLocalUse空uses | E-03（行619） | ○ |
| C-97 | UT-DCD-097: requestAutocomplete正常 | E-03（行622-628） | ○ |
| C-98 | UT-DCD-098: requestAutocomplete空結果 | E-03（行627） | ○ |

### 構造体・ユーティリティ（UT-DCD-099 〜 UT-DCD-121）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-99 | UT-DCD-099: CodeRequest.apply正常 | E-04（行638-645） | ○ |
| C-100 | UT-DCD-100: CodeRequest.applyデフォルト値 | E-04（行635） | ○ |
| C-101 | UT-DCD-101: CodeRequest.apply空ソースコード | E-04（行643） | ○ |
| C-102 | UT-DCD-102: SymbolInformationコンストラクタ正常 | E-05（行653-657） | ○ |
| C-103 | UT-DCD-103: SymbolInformationコンストラクタinit | E-05（行653-657） | ○ |
| C-104 | UT-DCD-104: Completionコンストラクタ正常 | E-06（行665-669） | ○ |
| C-105 | UT-DCD-105: Completionコンストラクタ空completions | E-06（行668） | ○ |
| C-106 | UT-DCD-106: CompletionのcompletionTypeキャスト | E-06（行667） | ○ |
| C-107 | UT-DCD-107: LocalUseコンストラクタ正常 | E-07（行678-683） | ○ |
| C-108 | UT-DCD-108: LocalUseコンストラクタ空completions | E-07（行682） | ○ |
| C-109 | UT-DCD-109: LocalUseのusesマッピング | E-07（行682） | ○ |
| C-110 | UT-DCD-110: unescapeTabsエスケープなし | E-09, E-10（行739） | ○ |
| C-111 | UT-DCD-111: unescapeTabs改行変換 | E-09（行720-721）, E-10（行740） | ○ |
| C-112 | UT-DCD-112: unescapeTabsタブ変換 | E-09（行722-723） | ○ |
| C-113 | UT-DCD-113: unescapeTabs二重バックスラッシュ | E-09（行726-727）, E-10（行741） | ○ |
| C-114 | UT-DCD-114: unescapeTabs複合エスケープ | E-09, E-10（行742） | ○ |
| C-115 | UT-DCD-115: unescapeTabs空文字列 | E-09（行695-696） | ○ |
| C-116 | UT-DCD-116: unescapeTabsバックスラッシュ末尾 | E-09（行703） | ○ |
| C-117 | UT-DCD-117: unescapeTabs未知エスケープ | E-09（行726-727） | ○ |
| C-118 | UT-DCD-118: unescapeTabs1文字入力 | E-09 | ○ |
| C-119 | UT-DCD-119: unescapeTabsバックスラッシュのみ | E-09（行703） | ○ |
| C-120 | UT-DCD-120: ExternalDCDClientがIDCDClient実装 | E-01, E-02（行55） | ○ |
| C-121 | UT-DCD-121: BuiltinDCDClientがIDCDClient実装 | E-01, E-03（行385） | ○ |

## 4) 不足情報（Unknown / Missing）
- **プラットフォーム固有の挙動（C-07, C-53, C-54, C-64）**: `version(haveUnixSockets)` はコンパイル時に決定されるため、単一環境でのテストでは一方の分岐しかカバーできない。クロスプラットフォームテスト環境が必要。
  - 候補：CI/CDでのマルチプラットフォームビルド / Docker等による仮想環境 / 条件付きコンパイルの別バイナリ
- **外部DCDサーバーの挙動（C-94）**: 空文字列クエリに対するDCDサーバーの応答仕様が不明。DCD公式ドキュメントの確認が必要。
  - 候補：DCD公式ドキュメント / DCDサーバーのソースコード / 実行時の動作確認
- **requestInlayHintsのkind列参照（C-32）**: コード上 `splits[0]` を空文字列チェックに使い、`splits[1][0]` をkindに設定しているが、テストケースの記述と実コードの対応を要確認。
  - 候補：DCDプロトコル仕様 / DCD出力フォーマットの確認

## 5) リスクフラグ（レビュー観点）
- **リスク1（中）**: ExternalDCDClientの全メソッドは外部プロセス呼び出しに依存しており、単体テストではモック/スタブが必須。テスト実装時のモック設計が重要。
- **リスク1（中）**: BuiltinDCDClientの接続管理（connectForRequest/closeRequestConnection）はMutexを使用しており、マルチスレッドでのテストが必要になる可能性がある。
- **リスク0（低）**: unescapeTabs関数は既にユニットテスト（行737-743）が存在するため、テストケースの妥当性は高い。
- **リスク1（中）**: CodeRequest.applyメソッドはprivateであり、直接テストする場合はD言語のversion(unittest)による可視性制御が必要。
- **リスク0（低）**: 構造体のコンストラクタ（SymbolInformation, Completion, LocalUse）は単純なフィールド代入であり、テスト実装は容易。

## 6) レビュアーチェックリスト（最小）
- [ ] ExternalDCDClientのテストケース（UT-DCD-008〜051）で外部プロセスのモック方法が適切か確認
- [ ] BuiltinDCDClientのソケット接続テスト（UT-DCD-067〜073）でテスト環境のセットアップ方法が十分か確認
- [ ] プラットフォーム依存テスト（UT-DCD-007, UT-DCD-053, UT-DCD-054, UT-DCD-064）のカバレッジ戦略を確認
- [ ] requestInlayHints（UT-DCD-032）のsplits[0]/splits[1]の参照が正しいか実コードと照合
- [ ] requestAutocompleteの複雑なパースロジック（UT-DCD-042〜049）のテストケースが全分岐をカバーしているか確認
- [ ] CodeRequest.apply（UT-DCD-099〜101）のprivateメソッドテスト方法が適切か確認
- [ ] unescapeTabs（UT-DCD-110〜119）の既存ユニットテスト（行737-743）との重複・差分を確認
