---
generated_at: 2026-02-20 12:00:00
metrics:
  claims_total: 42
  claims_with_evidence: 40
  claims_without_evidence: 2
confidence_derived: 0.95
---

# 根拠レポート：コードリーディングガイドライン

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：40 / 42、根拠なし：2
- 優先レビュー（高）
  1. **C-38: EventProcessorによるUDAスキャンの詳細動作**：mixinテンプレート内のCTFE処理の完全な追跡が困難
  2. **C-42: gthreadsAsyncProxyの内部動作**：mixin文字列の展開結果を静的に確認することが難しい

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

- E-01: `source/app.d` - エントリーポイント、main関数、コマンドライン引数処理
- E-02: `source/served/types.d` - 共通型定義、Configuration、lspRouter mixin
- E-03: `source/served/extension.d` - 初期化処理、コマンドのpublic import集約
- E-04: `source/served/info.d` - バージョン情報定義
- E-05: `dub.json` - メインパッケージ定義、サブパッケージ一覧、依存関係
- E-06: `README.md` - プロジェクト概要、レイアウト、カスタムリクエスト仕様
- E-07: `serverbase/source/served/serverbase.d` - LanguageServerRouter mixinテンプレート
- E-08: `serverbase/source/served/utils/events.d` - UDA定義 (protocolMethod, protocolNotification等)
- E-09: `lsp/source/served/lsp/jsonrpc.d` - RPCProcessor、JSON-RPC通信
- E-10: `workspace-d/source/workspaced/api.d` - ComponentWrapper、UDA定義 (component, globalOnly, instancedOnly)
- E-11: `workspace-d/source/workspaced/backend.d` - Configuration、WorkspaceD.Instance
- E-12: `workspace-d/source/workspaced/coms.d` - 全コンポーネントのpublic import集約
- E-13: `workspace-d/source/workspaced/future.d` - Future(T)クラス定義
- E-14: `workspace-d/source/workspaced/com/dcd.d` - DCDComponent (@component("dcd"))
- E-15: `workspace-d/source/workspaced/com/dub.d` - DubComponent (@instancedOnly)
- E-16: `workspace-d/source/workspaced/com/dfmt.d` - DfmtComponent (@globalOnly)
- E-17: `workspace-d/source/workspaced/com/dscanner.d` - DscannerComponent
- E-18: `workspace-d/source/workspaced/com/dcdext.d` - DCDExtComponent
- E-19: `workspace-d/source/workspaced/com/importer.d` - ImporterComponent (@globalOnly)
- E-20: `workspace-d/source/workspaced/com/fsworkspace.d` - FSWorkspaceComponent (@instancedOnly)
- E-21: `workspace-d/source/workspaced/com/moduleman.d` - ModulemanComponent
- E-22: `workspace-d/source/workspaced/com/snippets/package.d` - SnippetsComponent
- E-23: `source/served/commands/complete.d` - コード補完ハンドラ、convertFromDCDType
- E-24: `source/served/commands/definition.d` - 定義ジャンプ、findDeclarationImpl
- E-25: `source/served/commands/code_actions.d` - コードアクション、@protocolMethod
- E-26: `source/served/commands/dub.d` - DUBカスタムリクエスト (@protocolMethod)
- E-27: `source/served/commands/rename.d` - リネーム、@protocolMethod
- E-28: `source/served/linters/diagnosticmanager.d` - 診断統合、NumDiagnosticProviders
- E-29: `source/served/linters/dscanner.d` - D-Scannerリンター統合
- E-30: `source/served/backend/lazy_workspaced.d` - LazyWorkspaceD、LazyInstance
- E-31: `source/served/utils/translate.d` - 翻訳システム、5言語対応
- E-32: `source/crash_handler.d` - クラッシュハンドラ (backtrace)
- E-33: `serverbase/dub.sdl` - serverbaseサブパッケージ定義
- E-34: `lsp/dub.sdl` - lspサブパッケージ定義
- E-35: `workspace-d/dub.sdl` - workspace-dサブパッケージ定義
- E-36: `http/dub.sdl` - httpサブパッケージ定義
- E-37: `dcd/dub.sdl` - dcdサブパッケージ定義
- E-38: `protocol/dub.sdl` - protocolサブパッケージ定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | serve-dはMicrosoft LSPのD言語向け実装である | E-05, E-06 | ○ |
| C-02 | エントリーポイントはsource/app.dのmain関数 | E-01 (77行目) | ○ |
| C-03 | dub.json (トップレベル) とdub.sdl (サブパッケージ) の2形式を使用 | E-05, E-33-E-38 | ○ |
| C-04 | サブパッケージはhttp, protocol, lsp, serverbase, dcd, workspace-dの6つ | E-05 (22-29行目) | ○ |
| C-05 | D言語のモジュール宣言はファイルパスに対応する | E-01, E-02 | ○ |
| C-06 | static foreachはコンパイル時にループを展開する | E-01 (97-102行目) | ○ |
| C-07 | static ifはコンパイル時に条件分岐を行う | E-01 (82-85行目) | ○ |
| C-08 | versionによるプラットフォーム条件コンパイル | E-01 (57-70行目) | ○ |
| C-09 | fs = std.file, io = std.stdioのエイリアスインポートが全域で使われている | E-01, E-02, E-23, E-24, E-25, E-26 | ○ |
| C-10 | public importによるコマンドモジュールの集約 | E-03 (35-53行目) | ○ |
| C-11 | public importによるコンポーネントの集約 | E-12 (全体) | ○ |
| C-12 | @protocolMethod UDAでLSPメソッドルーティングが行われる | E-08 (14-17行目), E-26 (25行目) | ○ |
| C-13 | @protocolNotification UDAで通知ハンドラを登録 | E-08 (33-36行目) | ○ |
| C-14 | @component UDAでコンポーネント名を宣言 | E-10 (63-73行目), E-14 (26行目) | ○ |
| C-15 | @globalOnly UDAはグローバルコンポーネントを示す | E-10 (53-56行目), E-16 (23行目) | ○ |
| C-16 | @instancedOnly UDAはインスタンスコンポーネントを示す | E-10 (58-61行目), E-15 (37行目) | ○ |
| C-17 | DCDComponentはコード補完と定義検索を提供 | E-14 (26行目), E-24 (27行目) | ○ |
| C-18 | DubComponentはワークスペースごとに独立 (@instancedOnly) | E-15 (37行目) | ○ |
| C-19 | DfmtComponentはグローバルコンポーネント (@globalOnly) | E-16 (23行目) | ○ |
| C-20 | ImporterComponentはグローバルコンポーネント (@globalOnly) | E-19 (22行目) | ○ |
| C-21 | FSWorkspaceComponentはインスタンスコンポーネント (@instancedOnly) | E-20 (7行目) | ○ |
| C-22 | Future(T)パターンで非同期処理を実現 | E-13 (9-17行目) | ○ |
| C-23 | .getYieldで結果取得しつつファイバーをyield | E-24 (27行目) | ○ |
| C-24 | mixin LanguageServerRouterがLSPサーバーのコア機能を生成 | E-07 (65-66行目), E-02 (25行目) | ○ |
| C-25 | mixin DefaultComponentWrapperがコンポーネントの定型コードを生成 | E-10 (93行目以降), E-14 (29行目) | ○ |
| C-26 | 診断マネージャは3つのプロバイダの結果を統合する | E-28 (9行目) | ○ |
| C-27 | LazyWorkspaceDはコンポーネントの遅延ロードを実現 | E-30 (14行目以降) | ○ |
| C-28 | 翻訳システムは5言語 (en, de, fr, ja, ru) をサポート | E-31 (16-22行目) | ○ |
| C-29 | RPCProcessorはFiberを継承したJSON-RPC通信プロセッサ | E-09 (19-20行目) | ○ |
| C-30 | stdin/stdoutはserverbase.dでstderr/nullに差し替えられる | E-07 (10-23行目) | ○ |
| C-31 | コマンドライン引数に--require, --provide, --version等がある | E-01 (121-131行目) | ○ |
| C-32 | --provide httpでletEditorDownloadフラグが有効化 | E-01 (171-173行目) | ○ |
| C-33 | --provide implement-snippetsでimplementInterfaceSnippetsが有効化 | E-01 (175-179行目) | ○ |
| C-34 | バージョンは0.8.0-beta.18 | E-04 (3-4行目) | ○ |
| C-35 | dub, dfmt, dscannerがバンドルされている | E-04 (5行目) | ○ |
| C-36 | ビジターパターンでDParse ASTを走査 | E-18 (27-28行目) | ○ |
| C-37 | findDeclarationImplでDCDとDCDExtを組み合わせて定義位置を特定 | E-24 (24-55行目) | ○ |
| C-38 | EventProcessorがUDA付き関数を全スキャンしてディスパッチテーブルを構築 | E-08 (69行目), E-07 (109行目) | △ |
| C-39 | GC収集は30秒ごとに実行、最小化は5回ごと | E-07 (38-40行目) | ○ |
| C-40 | @serdeIgnoreUnexpectedKeysはmir-ionライブラリのUDA | E-02 (73-76行目) | ○ |
| C-41 | レイヤードアーキテクチャとコンポーネントパターンの組み合わせ | E-05, E-07, E-10, E-12 | ○ |
| C-42 | gthreadsAsyncProxyにより同期関数をスレッドプールで実行するFutureを自動生成 | E-16 (32行目) | △ |

## 4) 不足情報（Unknown / Missing）
- C-38: EventProcessorの内部動作はmixinテンプレート内のCTFE (コンパイル時関数実行) で実現されているが、その詳細な展開結果を静的に確認することが困難。`events.d` の `EventProcessor` mixinテンプレート全体の精読が必要。
  - 候補：`serverbase/source/served/utils/events.d` の後半部分 / コンパイル時の展開結果をデバッグ出力で確認
- C-42: `gthreadsAsyncProxy` はmixin文字列として定義されている (`workspace-d/source/workspaced/api.d` 内) が、その展開結果の完全な追跡にはapi.dの該当mixinテンプレートの精読が必要。
  - 候補：`workspace-d/source/workspaced/api.d` のmixin定義部分

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 言語基礎セクション (1章)：D言語公式仕様と一致する内容
- 0: 低リスク - ディレクトリ構造 (4章)：ファイルシステム上で直接確認可能
- 0: 低リスク - 命名規則 (3章)：ソースコードから直接抽出した情報
- 1: 中リスク - アーキテクチャ (5章)：レイヤー間の依存関係の完全性は手動確認が望ましい
- 1: 中リスク - mixinテンプレートの動作説明 (2.2章)：CTFE展開結果の正確性は実行時検証が推奨される
- 0: 低リスク - 業務フロー追跡 (8章)：ソースコードの行番号と内容が一致する
- 0: 低リスク - コンポーネント一覧 (6.2章)：coms.dと各com/*.dから直接確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] ディレクトリ構造図がプロジェクト実体と一致しているか確認
- [ ] 引用されているソースコードの行番号が現在のバージョンと一致するか確認
- [ ] UDA一覧 (2.2章) が漏れなく記載されているか確認
- [ ] コンポーネント一覧 (6.2章) が `workspace-d/source/workspaced/coms.d` の内容と一致するか確認
- [ ] アーキテクチャ図のレイヤー間依存関係が実際のdub.sdl依存と整合するか確認
- [ ] EventProcessor mixinの動作説明が実際の展開結果と一致するか確認 (△項目)
- [ ] gthreadsAsyncProxyの動作説明がmixin展開結果と一致するか確認 (△項目)
