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

# 根拠レポート：feature-navigation.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：68 / 68、根拠なし：0
- 優先レビュー（高）
  1. 全てのテストケースはソースコードに基づいて生成されており、根拠不足の項目はありません

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

- E-01: `lib/src/clojure_lsp/feature/call_hierarchy.clj` - 呼び出し階層機能の実装（prepare, incoming, outgoing関数）
- E-02: `lib/src/clojure_lsp/feature/document_symbol.clj` - ドキュメントシンボル機能の実装（element->name, document-symbols関数）
- E-03: `lib/src/clojure_lsp/feature/linked_editing_range.clj` - リンク編集範囲機能の実装（ranges関数）
- E-04: `lib/src/clojure_lsp/feature/selection_range.clj` - 選択範囲機能の実装（selection-ranges関数）
- E-05: `lib/src/clojure_lsp/feature/workspace_symbols.clj` - ワークスペースシンボル機能の実装（workspace-symbols関数）
- E-06: `lib/src/clojure_lsp/feature/folding.clj` - 折りたたみ範囲機能の実装（folding-range関数）
- E-07: `lib/src/clojure_lsp/feature/file_management.clj` - ファイル管理機能の実装（複数の公開関数）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | prepare関数がカーソル位置のシンボルから呼び出し階層アイテムを生成する | E-01 (L32-37) | ○ |
| C-02 | prepare関数がカーソル位置に要素がない場合にnilを返す | E-01 (L33: find-element-under-cursor) | ○ |
| C-03 | incoming関数が参照元一覧を取得する | E-01 (L68-80) | ○ |
| C-04 | incoming関数が参照元0件で空配列を返す | E-01 (L75-80: keep処理) | ○ |
| C-05 | incoming関数が参照元1件で正しく動作する | E-01 (L75-80) | ○ |
| C-06 | outgoing関数が呼び出し先一覧を取得する | E-01 (L82-95) | ○ |
| C-07 | outgoing関数がvar定義でない場合にnilを返す | E-01 (L85: when-let parent-var-def) | ○ |
| C-08 | outgoing関数が呼び出し先0件で空配列を返す | E-01 (L86-95: keep処理) | ○ |
| C-09 | element->name関数が要素名を正しく抽出する | E-02 (L10-12) | ○ |
| C-10 | element->name関数がdispatch-val-strを付加する | E-02 (L11-12: cond->) | ○ |
| C-11 | element->name関数がnilの場合の挙動 | E-02 (L11: some->使用) | ○ |
| C-12 | document-symbols関数がClojureファイルのシンボル一覧を取得する | E-02 (L107-119) | ○ |
| C-13 | document-symbols関数がEDNファイルを処理する | E-02 (L108: identical? :edn) | ○ |
| C-14 | document-symbols関数が定義0件で空配列を返す | E-02 (L116-119: map処理) | ○ |
| C-15 | document-symbols関数がEDNパースエラーをキャッチする | E-02 (L114: catch Exception) | ○ |
| C-16 | ranges関数がnamespace-aliasの編集範囲を取得する | E-03 (L12-18) | ○ |
| C-17 | ranges関数がnamespace-alias以外でnilを返す | E-03 (L14: fast= :namespace-alias) | ○ |
| C-18 | ranges関数がカーソル位置に要素がない場合にnilを返す | E-03 (L13: when-let element) | ○ |
| C-19 | ranges関数がalias参照1件で正しく動作する | E-03 (L15-18) | ○ |
| C-20 | selection-ranges関数が選択範囲階層を取得する | E-04 (L29-34) | ○ |
| C-21 | selection-ranges関数が親範囲を正しくネストする | E-04 (L14-27: zloc->selection-range) | ○ |
| C-22 | selection-ranges関数がドキュメント取得失敗時の挙動 | E-04 (L31: some->) | ○ |
| C-23 | selection-ranges関数がルート位置で処理する | E-04 (L18: edit/top?) | ○ |
| C-24 | workspace-symbols関数がクエリ一致するシンボルを取得する | E-05 (L33-51) | ○ |
| C-25 | workspace-symbols関数が空クエリで全シンボルを返す | E-05 (L22-25: string/blank?) | ○ |
| C-26 | workspace-symbols関数が一致0件で空配列を返す | E-05 (L36: fuzzy-filter) | ○ |
| C-27 | workspace-symbols関数がファジー検索を実行する | E-05 (L11-19: fuzzy-search, flx/score) | ○ |
| C-28 | workspace-symbols関数がURIでグループ化する | E-05 (L39-50: reduce) | ○ |
| C-29 | folding-range関数が折りたたみ範囲を取得する | E-06 (L7-15) | ○ |
| C-30 | folding-range関数が定義0件で空シーケンスを返す | E-06 (L8: find-element-definitions) | ○ |
| C-31 | folding-range関数が不完全な位置情報を除外する | E-06 (L10: when (and row col...)) | ○ |
| C-32 | folding-range関数が0-indexedで行番号を返す | E-06 (L11-14: dec) | ○ |
| C-33 | create-ns-changes関数が空ファイルにns宣言を追加する | E-07 (L25-35) | ○ |
| C-34 | create-ns-changes関数が既存コンテンツで追加しない | E-07 (L26: string/blank?) | ○ |
| C-35 | create-ns-changes関数が非Clojureファイルで追加しない | E-07 (L27: contains? #{:clj :cljs :cljc}) | ○ |
| C-36 | create-ns-changes関数がdenylistをチェックする | E-07 (L28: create-ns-blank-files-denylist) | ○ |
| C-37 | load-document!関数がドキュメントをDBに読み込む | E-07 (L37-38) | ○ |
| C-38 | load-document!関数がバージョンを0で初期化する | E-07 (L38: :v 0) | ○ |
| C-39 | did-open関数がkondo解析を実行する | E-07 (L42-44: future lsp.kondo/run-kondo-on-text!) | ○ |
| C-40 | did-open関数が診断を公開する | E-07 (L52: f.diagnostic/publish-diagnostics!) | ○ |
| C-41 | replace-text関数がテキスト範囲を置換する | E-07 (L202-230) | ○ |
| C-42 | replace-text関数が複数行置換を処理する | E-07 (L182-200: offsets, L224-227) | ○ |
| C-43 | replace-text関数がCRLF改行を処理する | E-07 (L215-223: original-nl, replacement-nl) | ○ |
| C-44 | replace-text関数が空置換で削除する | E-07 (L229: string/join) | ○ |
| C-45 | reference-uris関数が依存URIを取得する | E-07 (L84-139) | ○ |
| C-46 | reference-uris関数が変更なしで空セットを返す | E-07 (L137: set/union) | ○ |
| C-47 | analyze-reference-uris!関数がkondo解析を実行する | E-07 (L141-146) | ○ |
| C-48 | did-change関数が変更をDBに反映する | E-07 (L283-291) | ○ |
| C-49 | did-change関数が増分変更を適用する | E-07 (L285: reduce handle-change, L232-244) | ○ |
| C-50 | did-change関数が全体置換を適用する | E-07 (L243-244: rangeがない場合) | ○ |
| C-51 | analyze-changes関数が変更を解析する | E-07 (L255-281) | ○ |
| C-52 | analyze-changes関数が古いバージョンを無視する | E-07 (L257: >= version, L246-253: bump-version) | ○ |
| C-53 | analyze-watched-files!関数が監視ファイルを解析する | E-07 (L293-310) | ○ |
| C-54 | analyze-watched-files!関数が存在しないファイルをスキップする | E-07 (L297: shared/file-exists?) | ○ |
| C-55 | did-change-watched-files関数がファイル作成を処理する | E-07 (L353-354: concat created) | ○ |
| C-56 | did-change-watched-files関数がファイル削除を処理する | E-07 (L355-358: files-deleted) | ○ |
| C-57 | did-change-watched-files関数がファイル変更を処理する | E-07 (L353: when observe-changed?) | ○ |
| C-58 | did-close関数が外部ファイルの診断をクリアする | E-07 (L365-366: external-filename?) | ○ |
| C-59 | did-close関数が削除されたファイルをDBから削除する | E-07 (L367-368: not shared/file-exists?) | ○ |
| C-60 | force-get-document-text関数がキャッシュからテキストを取得する | E-07 (L373: get-in documents) | ○ |
| C-61 | force-get-document-text関数がファイルから読み込む | E-07 (L374-376: when-let text slurp-uri) | ○ |
| C-62 | force-get-document-text関数がファイル不在でnilを返す | E-07 (L374: when-let) | ○ |
| C-63 | did-save関数がsaved-on-diskフラグを更新する | E-07 (L399: assoc-in :saved-on-disk true) | ○ |
| C-64 | did-save関数が設定ファイル保存時に再解析する | E-07 (L378-396: lint-opened-files-when-any-config-changed!) | ○ |
| C-65 | will-rename-files関数がns変更を計算する | E-07 (L402-411) | ○ |
| C-66 | will-rename-files関数がns定義なしでスキップする | E-07 (L406-407: when old-ns-definition) | ○ |
| C-67 | will-rename-files関数が同名nsでスキップする | E-07 (L408: not= new-ns old-ns) | ○ |
| C-68 | did-rename-files関数がold-uriをDBから削除する | E-07 (L413-414: files-deleted) | ○ |

## 4) 不足情報（Unknown / Missing）
- 不足情報はありません。全てのテストケースはソースコードの関数定義に基づいて生成されています。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全てのテストケースはソースコードから直接抽出された関数に基づいています
- 注意点：
  - file_management.cljは非同期処理（future, async/thread）を含むため、テスト実行時にタイミング考慮が必要
  - DB状態を変更する関数（swap! db*）のテストは、モックまたはテスト用DBの準備が必要

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースが各公開関数（defn）を網羅しているか確認
- [ ] 正常系・異常系・境界値の観点が適切に設定されているか確認
- [ ] 入力値と期待結果がソースコードの実装と整合しているか確認
- [ ] 優先度（高/中/低）が適切に設定されているか確認
- [ ] file_management.cljの非同期処理のテストケースが適切か確認
- [ ] 各ナビゲーション機能（call-hierarchy, document-symbol等）のLSPプロトコル準拠を確認
