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

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：45 / 45、根拠なし：0
- 優先レビュー（高）
  1. **該当なし**：全テストケースに根拠あり

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

- E-01: `lib/src/clojure_lsp/feature/java_interop.clj` - Java相互運用機能（デコンパイル、JDKソース解析）
- E-02: `lib/src/clojure_lsp/feature/project_tree.clj` - プロジェクトツリー構築機能
- E-03: `lib/src/clojure_lsp/feature/test_tree.clj` - テストツリー構築機能
- E-04: `lib/src/clojure_lsp/feature/development_info.clj` - 開発情報取得機能
- E-05: `lib/src/clojure_lsp/feature/clojuredocs.clj` - ClojureDocs統合機能

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

### java_interop.clj 関連（C-01〜C-15）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | uri->translated-uri: JARファイル内クラスのデコンパイル変換 | E-01 L119-120: `(defn uri->translated-uri [uri db producer] (uri->translated-file! uri db producer))` | ○ |
| C-02 | uri->translated-uri: 非JARファイルはそのまま返却 | E-01 L102-103, L117: `(if (and (shared/jar-file? uri) (shared/class-file? uri)) ... uri)` | ○ |
| C-03 | uri->translated-uri: インナークラスの$除去処理 | E-01 L113-116: `(if-let [inner-class-pos (string/index-of decompiled-uri "$")] (str (subs decompiled-uri 0 inner-class-pos) ".java")` | ○ |
| C-04 | read-content!: デコンパイル済みファイル内容読み込み | E-01 L122-123: `(defn read-content! [uri db producer] (slurp (uri->translated-file! uri db producer)))` | ○ |
| C-05 | read-content!: 存在しないURI時の例外 | E-01 L122-123: slurp関数は存在しないファイルでFileNotFoundException | ○ |
| C-06 | retrieve-jdk-source-and-analyze!: 既存JDKキャッシュロード | E-01 L309-316: `:jdk-already-installed`時のglobal-db読み込み処理 | ○ |
| C-07 | retrieve-jdk-source-and-analyze!: ローカルJDK展開・解析 | E-01 L277-281: `:automatic-local-jdk`時のunzip処理 | ○ |
| C-08 | retrieve-jdk-source-and-analyze!: カスタムJDKソースURI使用 | E-01 L283-287: `:manual-local-jdk`時の処理 | ○ |
| C-09 | retrieve-jdk-source-and-analyze!: JDKダウンロード | E-01 L289-293: `:download-jdk`時のdownload-jdk!呼び出し | ○ |
| C-10 | retrieve-jdk-source-and-analyze!: JDKなし時警告 | E-01 L296: `(logger/warn java-logger-tag "Skipping download JDK source...")` | ○ |
| C-11 | jdk-analysis-decision: :jdk-already-installed判定 | E-01 L205-209: `(and installed-jdk-source-uri (or (not custom-jdk-source-uri)...))` | ○ |
| C-12 | jdk-analysis-decision: :automatic-local-jdk判定 | E-01 L211-214: `(and (not custom-jdk-source-uri) @local-jdk-source-file*)` | ○ |
| C-13 | jdk-analysis-decision: :manual-local-jdk判定 | E-01 L216-226: plain-uri?またはvalid-url?でない場合 | ○ |
| C-14 | jdk-analysis-decision: :download-jdk判定 | E-01 L228-230: `download-jdk-source?`がtrueの場合 | ○ |
| C-15 | jdk-analysis-decision: :no-source-found判定 | E-01 L232-233: else節 | ○ |

### project_tree.clj 関連（C-16〜C-22）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | nodes: nilでルートノード返却 | E-02 L94-97: `(cond (not current-node) (root-node db)` | ○ |
| C-17 | nodes: :source-pathで名前空間定義返却 | E-02 L99-100: `(fast= :source-path (:type current-node)) (source-path-node current-node db)` | ○ |
| C-18 | nodes: :libraryでJARリスト返却 | E-02 L102-104: `(and (fast= :library (:type current-node))...)` | ○ |
| C-19 | nodes: :jarで名前空間/クラス返却 | E-02 L106-107: `(fast= :jar (:type current-node)) (jar-node current-node db)` | ○ |
| C-20 | nodes: :nsでvar定義返却 | E-02 L109-110: `(fast= :ns (:type current-node)) (ns-node current-node db)` | ○ |
| C-21 | nodes: 空source-paths時External dependencies含む | E-02 L12-21: root-nodeのconcatでExternal dependenciesを常に含む | ○ |
| C-22 | nodes: 空名前空間定義時空nodes | E-02 L23-34: source-path-nodeはnamespace-definitionsをmapv | ○ |

### test_tree.clj 関連（C-23〜C-27）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | tree: テストツリー構築 | E-03 L36-54: tree関数全体の実装 | ○ |
| C-24 | tree: ネストtesting階層化 | E-03 L8-26: ->testings-children再帰処理 | ○ |
| C-25 | tree: deftest0件時nil返却 | E-03 L48-49: `(when (seq tests-tree)...)` | ○ |
| C-26 | tree: testingなしdeftest | E-03 L28-34: deftest->treeの:children部分 | ○ |
| C-27 | tree: cljs.test/deftest認識 | E-03 L40-41: `(some '#{clojure.test/deftest cljs.test/deftest}...)` | ○ |

### development_info.clj 関連（C-28〜C-34）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | server-info-log: show-message呼び出し | E-04 L30-36: `(producer/show-message producer ... :info nil)` | ○ |
| C-29 | server-info-raw: kebab-case保持 | E-04 L38-39: `(shared/preserve-kebab-case (server-info @db*))` | ○ |
| C-30 | server-info-raw: analysis-summary含む | E-04 L26: `:analysis-summary (q/analysis-summary db)` | ○ |
| C-31 | cursor-info-log: show-message呼び出し | E-04 L58-65: `(producer/show-message producer ... :info nil)` | ○ |
| C-32 | cursor-info-raw: node/elements含む | E-04 L41-56: cursor-info実装 | ○ |
| C-33 | cursor-info-raw: definition/semantic-tokens含む | E-04 L54-55: `:definition (q/find-definition db e) :semantic-tokens ...` | ○ |
| C-34 | cursor-info-raw: 空位置時elements空 | E-04 L42: `(q/find-all-elements-under-cursor db uri row col)` | ○ |

### clojuredocs.clj 関連（C-35〜C-45）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | refresh-cache!: キャッシュリフレッシュ | E-05 L18-36: refresh-cache!関数全体 | ○ |
| C-36 | refresh-cache!: refreshing?フラグ管理 | E-05 L24, L36: `assoc-in [:clojuredocs :refreshing?]` true/false | ○ |
| C-37 | refresh-cache!: ネットワークエラー処理 | E-05 L27-28: `(if (not downloadable?) (logger/error ...)` | ○ |
| C-38 | refresh-cache!: hover設定無効時スキップ | E-05 L19: `(when (and (settings/get @db* [:hover :clojuredocs] true)...)` | ○ |
| C-39 | refresh-cache!: 重複実行防止 | E-05 L20: `(not (-> @db* :clojuredocs :refreshing?))` | ○ |
| C-40 | find-docs-for: キャッシュからドキュメント返却 | E-05 L41-42: `(get cache full-keyword)` | ○ |
| C-41 | find-docs-for: キャッシュなし時nil+バックグラウンドリフレッシュ | E-05 L43-46: `(do (async/go (refresh-cache! db*)) nil)` | ○ |
| C-42 | find-docs-for: nil名前空間時nil | E-05 L39: `(when sym-ns ...)` | ○ |
| C-43 | find-docs-for: 存在しないシンボル時nil | E-05 L42: `(get cache full-keyword)`はnilを返す | ○ |
| C-44 | find-hover-docs-for: hover有効時ドキュメント返却 | E-05 L48-50: hover設定チェック後find-docs-for呼び出し | ○ |
| C-45 | find-hover-docs-for: hover無効時nil | E-05 L49: `(when (settings/get @db* [:hover :clojuredocs] true) ...)` | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：全てのテストケースがソースコードに基づいて生成されている

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースにソースコード根拠あり
- 注意事項:
  - java_interop.clj: 外部サービス（JDKダウンロード、デコンパイル）との連携があるため、モック化が必要
  - clojuredocs.clj: 外部API（clojuredocs-export-edn）との連携があるため、ネットワークモックが必要

## 6) レビュアーチェックリスト（最小）
- [ ] java_interop関連テスト（C-01〜C-15）: デコンパイル処理のモック化方法が適切か確認
- [ ] project_tree関連テスト（C-16〜C-22）: db構造の前提条件が網羅されているか確認
- [ ] test_tree関連テスト（C-23〜C-27）: clojure.test/cljs.test両方のカバレッジ確認
- [ ] development_info関連テスト（C-28〜C-34）: producer依存のモック化方法確認
- [ ] clojuredocs関連テスト（C-35〜C-45）: async/go処理のテスト方法確認
- [ ] 境界値テスト: 空コレクション、nil入力の網羅性確認
