---
generated_at: 2026-03-01 10:00:00
metrics:
  claims_total: 141
  claims_with_evidence: 138
  claims_without_evidence: 3
confidence_derived: 0.98
---

# 根拠レポート：nu-lsp.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：138 / 141、根拠なし：3
- 優先レビュー（高）
  1. **UT-LSP-056**：外部コマンドホバーのmanページ表示（OS依存、テストコードでも#[ignore]指定）
  2. **UT-LSP-124**：タイムアウト処理（タイミング依存で実際の動作確認が困難）
  3. **UT-LSP-139**：最適化スキップ（実装詳細の推測を含む）

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

- E-01: `crates/nu-lsp/src/lib.rs` - LanguageServer構造体と主要メソッドの定義
- E-02: `crates/nu-lsp/src/completion.rs` - complete()メソッドと補完ロジック
- E-03: `crates/nu-lsp/src/diagnostics.rs` - publish_diagnostics_for_file()メソッド
- E-04: `crates/nu-lsp/src/goto.rs` - goto_definition()とfind_definition_span_by_id()
- E-05: `crates/nu-lsp/src/hover.rs` - hover()とget_decl_description()
- E-06: `crates/nu-lsp/src/hints.rs` - get_inlay_hints()とextract_inlay_hints()
- E-07: `crates/nu-lsp/src/notification.rs` - handle_lsp_notification()と各種通知送信メソッド
- E-08: `crates/nu-lsp/src/semantic_tokens.rs` - get_semantic_tokens()とextract_semantic_tokens()
- E-09: `crates/nu-lsp/src/signature.rs` - get_signature_help()とヘルパー関数
- E-10: `crates/nu-lsp/src/symbols.rs` - SymbolCacheとシンボル関連メソッド
- E-11: `crates/nu-lsp/src/ast.rs` - find_id()、find_reference_by_id()、各種ヘルパー関数
- E-12: `crates/nu-lsp/src/workspace.rs` - ワークスペース関連機能、リネーム、参照検索
- E-13: `crates/nu-lsp/src/lib.rs` 内のテストコード（tests module）
- E-14: `crates/nu-lsp/src/completion.rs` 内のテストコード
- E-15: `crates/nu-lsp/src/diagnostics.rs` 内のテストコード
- E-16: `crates/nu-lsp/src/goto.rs` 内のテストコード
- E-17: `crates/nu-lsp/src/hover.rs` 内のテストコード
- E-18: `crates/nu-lsp/src/hints.rs` 内のテストコード
- E-19: `crates/nu-lsp/src/notification.rs` 内のテストコード
- E-20: `crates/nu-lsp/src/semantic_tokens.rs` 内のテストコード
- E-21: `crates/nu-lsp/src/signature.rs` 内のテストコード
- E-22: `crates/nu-lsp/src/symbols.rs` 内のテストコード
- E-23: `crates/nu-lsp/src/workspace.rs` 内のテストコード

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

### lib.rs関連（UT-LSP-001〜020）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | initialize_stdio_connection正常系 | E-01 (L95-98) | ○ |
| C-02 | initialize_connection正常系 | E-01 (L100-119) | ○ |
| C-03 | serve_requests正常系シャットダウン | E-01, E-13 (shutdown_on_request test) | ○ |
| C-04 | serve_requests異常系シグナル | E-01 (L173, L190) | ○ |
| C-05 | cancel_background_thread正常系 | E-01 (L291-299) | ○ |
| C-06 | handle_internal_messages正常系RangeMessage | E-01 (L302-328) | ○ |
| C-07 | handle_internal_messages正常系Finished | E-01 (L313-316) | ○ |
| C-08 | new_engine_state正常系URI指定 | E-01 (L334-361) | ○ |
| C-09 | new_engine_state正常系URI=None | E-01 (L344-348) | ○ |
| C-10 | new_engine_state正常系キャッシュマージ | E-01 (L351-359) | ○ |
| C-11 | cache_parsed_block正常系 | E-01 (L363-371) | ○ |
| C-12 | parse_and_find正常系 | E-01 (L373-394) | ○ |
| C-13 | parse_and_find異常系 | E-01 (L381) | ○ |
| C-14 | parse_file正常系 | E-01 (L396-424) | ○ |
| C-15 | parse_file正常系追加情報 | E-01 (L412-420) | ○ |
| C-16 | handle_lsp_request正常系 | E-01 (L426-453) | ○ |
| C-17 | handle_lsp_request異常系 | E-01 (L443-452) | ○ |
| C-18 | path_to_uri正常系 | E-01 (L72-79) | ○ |
| C-19 | uri_to_path正常系 | E-01 (L81-86) | ○ |
| C-20 | span_to_range正常系 | E-01 (L88-92) | ○ |

### completion.rs関連（UT-LSP-021〜033）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | 変数補完 | E-02, E-14 (case::variable) | ○ |
| C-22 | ローカル変数補完 | E-02, E-14 (case::local_variable) | ○ |
| C-23 | キーワード補完 | E-02, E-14 (case::keyword) | ○ |
| C-24 | セルパス補完 | E-02, E-14 (case::cell_path_first) | ○ |
| C-25 | コマンドスニペット | E-02 (L75-131), E-14 | ○ |
| C-26 | 外部コンプリータ | E-02, E-14 (case::external_completer) | ○ |
| C-27 | 先頭位置フォールバック | E-02 (L30-31), E-14 (case::fallback_beginning) | ○ |
| C-28 | 演算子補完 | E-02, E-14 (case::operator_not_equal) | ○ |
| C-29 | モジュール補完 | E-02, E-14 (case::use_module) | ○ |
| C-30 | フラグ補完 | E-02, E-14 (case::short_flag_name) | ○ |
| C-31 | 空補完結果 | E-02 (L50) | ○ |
| C-32 | CompletionItem生成 | E-02 (L65-172) | ○ |
| C-33 | CompletionItemKind変換 | E-02 (L174-197) | ○ |

### diagnostics.rs関連（UT-LSP-034〜037）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | エラー診断公開 | E-03, E-15 (case::variable_does_not_exist) | ○ |
| C-35 | 警告診断公開 | E-03 (L41-50) | ○ |
| C-36 | 正常ファイル診断 | E-03, E-15 (case::file_with_no_issues) | ○ |
| C-37 | 診断再計算 | E-03, E-15 (case::file_fixed_by_update) | ○ |

### goto.rs関連（UT-LSP-038〜050）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | 変数定義移動 | E-04, E-16 (case::variable) | ○ |
| C-39 | コマンド定義移動 | E-04, E-16 (case::command) | ○ |
| C-40 | パラメータ定義移動 | E-04, E-16 (case::command_parameter) | ○ |
| C-41 | モジュール定義移動 | E-04, E-16 (case::module) | ○ |
| C-42 | クロスファイル移動 | E-04, E-16 (case::module_in_another_file) | ○ |
| C-43 | セルパス定義移動 | E-04, E-16 (case::cell_path_first) | ○ |
| C-44 | 存在しないファイル | E-04, E-16 (goto_definition_for_none_existing_file) | ○ |
| C-45 | 新規ファイル対応 | E-04, E-16 (goto_definition_in_new_file) | ○ |
| C-46 | stdlib相対パス処理 | E-04, E-16 (goto_definition_on_stdlib_should_not_panic) | ○ |
| C-47 | Declaration Span取得 | E-04 (L61-64) | ○ |
| C-48 | Variable Span取得 | E-04 (L65-68) | ○ |
| C-49 | Module Span取得 | E-04 (L69-72) | ○ |
| C-50 | External Span None | E-04 (L83) | ○ |

### hover.rs関連（UT-LSP-051〜059）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | 変数ホバー | E-05, E-17 (case::variable) | ○ |
| C-52 | カスタムコマンドホバー | E-05, E-17 (case::custom_command) | ○ |
| C-53 | 組み込みコマンドホバー | E-05, E-17 (case::str_join) | ○ |
| C-54 | セルパスホバー | E-05, E-17 (case::cell_path1-3) | ○ |
| C-55 | モジュールホバー | E-05, E-17 (case::module_first-third) | ○ |
| C-56 | 外部コマンドホバー | E-05 (L187-216), E-17 (hover_on_external_command, #[ignore]) | △ |
| C-57 | エクスポートホバー | E-05, E-17 (hover_on_exportable) | ○ |
| C-58 | コマンド説明生成 | E-05 (L11-117) | ○ |
| C-59 | 説明スキップ | E-05 (L13-14) | ○ |

### hints.rs関連（UT-LSP-060〜065）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | inlay hints取得 | E-06 (L140-142) | ○ |
| C-61 | 型ヒント抽出 | E-06, E-18 (case::variable_type) | ○ |
| C-62 | 代入型ヒント | E-06, E-18 (case::assignment_type) | ○ |
| C-63 | パラメータ名ヒント | E-06, E-18 (case::parameter_names) | ○ |
| C-64 | 明示的型指定 | E-06 (L58-69) | ○ |
| C-65 | 型名短縮 | E-06 (L14-22) | ○ |

### notification.rs関連（UT-LSP-066〜075）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | ファイルオープン通知 | E-07 (L22-26) | ○ |
| C-67 | ファイル変更通知 | E-07 (L27-32) | ○ |
| C-68 | ファイルクローズ通知 | E-07 (L33-41) | ○ |
| C-69 | ワークスペース変更通知 | E-07 (L42-53) | ○ |
| C-70 | 進捗通知送信 | E-07 (L58-73) | ○ |
| C-71 | ログ送信 | E-07 (L75-85) | ○ |
| C-72 | 進捗開始 | E-07 (L87-97) | ○ |
| C-73 | 進捗レポート | E-07 (L99-113) | ○ |
| C-74 | 進捗終了 | E-07 (L115-124) | ○ |
| C-75 | エラー送信 | E-07 (L126-145) | ○ |

### semantic_tokens.rs関連（UT-LSP-076〜079）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-76 | semantic tokens取得 | E-08 (L42-52) | ○ |
| C-77 | コマンド名トークン抽出 | E-08, E-20 (semantic_token_internals) | ○ |
| C-78 | 相対位置計算 | E-08 (L63-88) | ○ |
| C-79 | キーワードスキップ | E-08 (L28-31) | ○ |

### signature.rs関連（UT-LSP-080〜087）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | シグネチャヘルプ取得 | E-09, E-21 (case::str_substring_pos_15) | ○ |
| C-81 | アクティブパラメータ | E-09, E-21 (case::str_substring_pos_17-22) | ○ |
| C-82 | カスタムコマンドシグネチャ | E-09, E-21 (case::custom_command_foo_bar) | ○ |
| C-83 | オプショナル表示 | E-09, E-21 (case::custom_command_foo_baz) | ○ |
| C-84 | ホワイトスペース処理 | E-09 (L132-136) | ○ |
| C-85 | フラグフォーマット | E-09 (L38-51) | ○ |
| C-86 | 引数ドキュメント生成 | E-09 (L53-81) | ○ |
| C-87 | シグネチャラベル生成 | E-09 (L83-114) | ○ |

### symbols.rs関連（UT-LSP-088〜098）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | キャッシュ初期化 | E-10 (L81-91) | ○ |
| C-89 | ダーティフラグ設定 | E-10 (L93-95) | ○ |
| C-90 | シンボルキャッシュ更新 | E-10 (L186-225) | ○ |
| C-91 | キャッシュ削除 | E-10 (L227-230) | ○ |
| C-92 | シンボル取得 | E-10 (L238-246) | ○ |
| C-93 | ファジー検索 | E-10 (L248-265), E-22 (workspace_symbol_request) | ○ |
| C-94 | ダーティチェック | E-10 (L267-269) | ○ |
| C-95 | ドキュメントシンボル | E-10, E-22 (case::basic_symbols) | ○ |
| C-96 | シンボル更新 | E-10, E-22 (case::after_update) | ○ |
| C-97 | ワークスペースシンボル | E-10, E-22 (case::search_br) | ○ |
| C-98 | シンボルソート | E-10 (L40-51) | ○ |

### ast.rs関連（UT-LSP-099〜115）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-99 | AST位置検索 | E-11 (L506-513) | ○ |
| C-100 | 変数ID検索 | E-11 (L439-442) | ○ |
| C-101 | コマンドID検索 | E-11 (L443-451) | ○ |
| C-102 | 外部コマンドID検索 | E-11 (L453-459) | ○ |
| C-103 | セルパスID検索 | E-11 (L461-482) | ○ |
| C-104 | 値ID検索 | E-11 (L488-500) | ○ |
| C-105 | 参照検索 | E-11 (L547-556) | ○ |
| C-106 | 変数参照検索 | E-11 (L521-526) | ○ |
| C-107 | コマンド参照検索 | E-11 (L529-536) | ○ |
| C-108 | クォート除去 | E-11 (L10-25) | ○ |
| C-109 | ドル記号除去 | E-11 (L28-38) | ○ |
| C-110 | コマンド名Span取得 | E-11 (L43-78) | ○ |
| C-111 | def内ID検索 | E-11 (L108-164) | ○ |
| C-112 | module内ID検索 | E-11 (L176-229) | ○ |
| C-113 | use内モジュールID検索 | E-11 (L237-356) | ○ |
| C-114 | use内エクスポートID検索 | E-11 (L255-296) | ○ |
| C-115 | overlay内ID検索 | E-11 (L365-426) | ○ |

### workspace.rs関連（UT-LSP-116〜141）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-116 | ワークスペース初期化 | E-12 (L89-101) | ○ |
| C-117 | null対応 | E-12, E-23 (malformed_init_params) | ○ |
| C-118 | 変数ハイライト | E-12, E-23 (case::variable) | ○ |
| C-119 | エイリアスハイライト | E-12, E-23 (case::module_alias_first) | ○ |
| C-120 | モジュールレコードハイライト | E-12, E-23 (case::module_record_first) | ○ |
| C-121 | ワークスペース参照検索 | E-12, E-23 (case::command_reference) | ○ |
| C-122 | 単一ファイル参照検索 | E-12, E-23 (case::single_file_without_workspace_folder_param) | ○ |
| C-123 | 新規ファイル参照検索 | E-12, E-23 (case::new_file) | ○ |
| C-124 | タイムアウト処理 | E-12 (L233-240) | △ |
| C-125 | リネーム実行 | E-12 (L137-160) | ○ |
| C-126 | リネーム準備 | E-12, E-23 (rename_operations) | ○ |
| C-127 | 値リネーム拒否 | E-12 (L270-272) | ○ |
| C-128 | 組み込みリネーム拒否 | E-12 (L273-277) | ○ |
| C-129 | ワークスペースリネーム準備 | E-12, E-23 (rename_operations) | ○ |
| C-130 | リネームキャンセル | E-12, E-23 (rename_cancelled) | ○ |
| C-131 | スクリプト検索 | E-12 (L41-48) | ○ |
| C-132 | 存在しないフォルダ | E-12 (L43-44) | ○ |
| C-133 | IDTracker初期化 | E-12 (L71-86) | ○ |
| C-134 | ファイル内参照検索 | E-12 (L330-381) | ○ |
| C-135 | ID更新処理 | E-12 (L347-359) | ○ |
| C-136 | シグネチャ内参照 | E-12 (L385-411) | ○ |
| C-137 | ワークスペース参照検索バックグラウンド | E-12 (L415-529) | ○ |
| C-138 | 検索キャンセル | E-12 (L468-473) | ○ |
| C-139 | 最適化スキップ | E-12 (L497-503) | △ |
| C-140 | フォルダ検索 | E-12 (L531-538) | ○ |
| C-141 | フォルダ不一致 | E-12 (L531-538) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-LSP-056（外部コマンドホバー）**: テストコードで`#[ignore]`指定されており、CI環境でのディスクIO問題が理由。OS依存の動作であり、実際の動作確認が困難。
  - 候補：手動テスト / 特定環境でのテスト実行
- **UT-LSP-124（タイムアウト処理）**: タイミング依存のテストは環境により結果が異なる可能性がある。
  - 候補：モックを使用したテスト / 決定論的なタイムアウトテスト設計
- **UT-LSP-139（最適化スキップ）**: memchr::memmem::Finderの使用による最適化の動作確認。実装詳細の推測を含む。
  - 候補：パフォーマンステスト / ログ出力による動作確認

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - UT-LSP-001〜055, 057〜123, 125〜138, 140〜141（134件）
  - ソースコード内のimpl/関数定義と既存テストコードに明確な対応あり
- **1: 中リスク** - UT-LSP-124, 139（2件）
  - タイミング依存または実装詳細の推測を含む
- **2: 高リスク** - UT-LSP-056（1件）
  - OS依存の外部コマンド実行。既存テストでも#[ignore]指定で回避されている

## 6) レビュアーチェックリスト（最小）
- [ ] 全141件のテストケースがnu-lspモジュールの主要機能をカバーしているか確認
- [ ] LanguageServer構造体の全publicメソッドにテストケースが存在するか確認
- [ ] 各ファイル（12ファイル）に対してテストケースが存在するか確認
- [ ] 優先度「高」のテストケースが実際のユースケースをカバーしているか確認
- [ ] △マークの3件（UT-LSP-056, 124, 139）について追加テスト設計の必要性を検討
- [ ] 境界値テスト（UT-LSP-027, 084, 124）が適切に定義されているか確認
- [ ] 異常系テスト（13件）が十分にエラーハンドリングをカバーしているか確認
