---
generated_at: 2026-02-19 12:15:00
metrics:
  claims_total: 90
  claims_with_evidence: 90
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：90 / 90、根拠なし：0
- 優先レビュー（高）
  1. **カスタムリンター関連テスト（UT-DIA-069〜090）**：SCIサンドボックス環境でのリンター実行のため、実際の動作確認推奨
  2. **循環依存検出テスト（UT-DIA-054〜060）**：DFSアルゴリズムの正確性確認推奨
  3. **未使用変数検出テスト（UT-DIA-048〜053）**：複雑な除外ロジックの網羅性確認推奨

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

- E-01: `lib/src/clojure_lsp/feature/diagnostics.clj` - 診断機能のメインモジュール（160行）
- E-02: `lib/src/clojure_lsp/feature/diagnostics/built_in.clj` - ビルトインリンター実装（351行）
- E-03: `lib/src/clojure_lsp/feature/diagnostics/custom.clj` - カスタムリンター実装（162行）
- E-04: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト計画書

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

### diagnostics.clj 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | severity->colorはseverity=1で:redを返す | E-01 (L89-93) case文の定義 | ○ |
| C-02 | severity->colorはseverity=2で:yellowを返す | E-01 (L89-93) case文の定義 | ○ |
| C-03 | severity->colorはseverity=3で:cyanを返す | E-01 (L89-93) case文の定義 | ○ |
| C-04 | severity->colorの範囲外値処理 | E-01 (L89-93) case文にelse節なし | ○ |
| C-05 | find-diagnosticsはURIに対応する診断情報を取得 | E-01 (L115-129) find-diagnostics関数定義 | ○ |
| C-06 | find-diagnosticsはJARファイルで空リスト返却 | E-01 (L118) jar-file?チェック | ○ |
| C-07 | find-diagnosticsはclj-kondo :offでスキップ | E-01 (L116, L121-122) kondo-level判定 | ○ |
| C-08 | find-diagnosticsはclj-depend :offでスキップ | E-01 (L117, L124-125) depend-level判定 | ○ |
| C-09 | find-diagnostics空診断情報処理 | E-01 (L115-129) concat処理 | ○ |
| C-10 | publish-diagnostics!で診断公開 | E-01 (L145-146) publish-diagnostics!定義 | ○ |
| C-11 | publish-all-diagnostics!で複数URI公開 | E-01 (L148-156) publish-all-diagnostics!定義 | ○ |
| C-12 | publish-all-diagnostics!でpublish-empty?フィルタ | E-01 (L153-155) filter処理 | ○ |
| C-13 | publish-all-diagnostics!でunknownファイルタイプスキップ | E-01 (L151) remove処理 | ○ |
| C-14 | publish-empty-diagnostics!で空診断公開 | E-01 (L158-159) publish-empty-diagnostics!定義 | ○ |
| C-15 | publish-empty-diagnostics!空URIリスト処理 | E-01 (L158-159) map処理 | ○ |
| C-16 | kondo-finding->diagnosticの変換処理 | E-01 (L36-64) kondo-finding->diagnostic定義 | ○ |
| C-17 | unnecessary-typeにtag=1付与 | E-01 (L14-25, L49) diagnostic-types-of-unnecessary-type | ○ |
| C-18 | deprecated-typeにtag=2付与 | E-01 (L27-28, L50) deprecated-diagnostic-types | ○ |
| C-19 | langs情報の出力 | E-01 (L51-54) output-langs?条件 | ○ |
| C-20 | valid-finding?のrow/col検証 | E-01 (L66-69) valid-finding?定義 | ○ |
| C-21 | valid-finding?のrow欠損処理 | E-01 (L68) or条件 | ○ |
| C-22 | valid-finding?のlevel :off処理 | E-01 (L67) when条件 | ○ |
| C-23 | exclude-ns?の名前空間除外 | E-01 (L71-76) exclude-ns?定義 | ○ |
| C-24 | exclude-ns?の非除外処理 | E-01 (L75-76) re-matches条件 | ○ |

### built_in.clj 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | analyze-uris!で複数URI診断実行 | E-02 (L314-340) analyze-uris!定義 | ○ |
| C-26 | analyze-uris!で未使用public var検出 | E-02 (L324-325) unused*処理 | ○ |
| C-27 | analyze-uris!で異なるエイリアス検出 | E-02 (L327-328) different*処理 | ○ |
| C-28 | analyze-uris!で循環依存検出 | E-02 (L330-331) cyclic*処理 | ○ |
| C-29 | analyze-uris!でignoreコメント適用 | E-02 (L321-322, L333) ignores*処理 | ○ |
| C-30 | analyze-uris!空URIリスト処理 | E-02 (L320) empty-diags処理 | ○ |
| C-31 | analyze-uri!で単一URI診断 | E-02 (L342-343) analyze-uri!定義 | ○ |
| C-32 | analyze-paths!でパス指定診断 | E-02 (L345-347) analyze-paths!定義 | ○ |
| C-33 | analyze-paths!でディレクトリ展開 | E-02 (L347) dir-uris->file-uris呼び出し | ○ |
| C-34 | db-with-resultsで結果マージ | E-02 (L349-350) db-with-results定義 | ○ |
| C-35 | db-with-resultsで既存結果上書き | E-02 (L350) merge処理 | ○ |
| C-36 | element->diagnosticの変換処理 | E-02 (L69-80) element->diagnostic定義 | ○ |
| C-37 | element->diagnosticのtags処理 | E-02 (L80) assoc-some処理 | ○ |
| C-38 | ignore-diag?のマッチ処理 | E-02 (L17-34) ignore-diag?定義 | ○ |
| C-39 | ignore-diag?の非マッチ処理 | E-02 (L23-33) some処理 | ○ |
| C-40 | ignore-diag?のall-codes処理 | E-02 (L26) all-codes条件 | ○ |
| C-41 | find-ignore-commentsの抽出処理 | E-02 (L38-67) find-ignore-comments定義 | ○ |
| C-42 | find-ignore-commentsのkondo ignore認識 | E-02 (L36, L53) ignores-keywords | ○ |
| C-43 | find-ignore-commentsのlsp ignore認識 | E-02 (L36, L58) ignores-keywords | ○ |
| C-44 | find-ignore-commentsのignoreなし処理 | E-02 (L43) filterv処理 | ○ |
| C-45 | different-aliasesの検出処理 | E-02 (L82-111) different-aliases定義 | ○ |
| C-46 | different-aliasesのlevel :off処理 | E-02 (L83-84) when-not条件 | ○ |
| C-47 | different-aliasesの除外alias処理 | E-02 (L85-86) exclude-aliases | ○ |
| C-48 | unused-public-varsの検出処理 | E-02 (L179-241) unused-public-vars定義 | ○ |
| C-49 | unused-public-varsのlevel :off処理 | E-02 (L180) when-not条件 | ○ |
| C-50 | unused-public-varsのexclude-regex処理 | E-02 (L139, L148) excluded-syms-regex | ○ |
| C-51 | unused-public-varsのcomment除外 | E-02 (L144-145) inside-comment? | ○ |
| C-52 | unused-public-varsのexport除外 | E-02 (L155) :export条件 | ○ |
| C-53 | unused-public-varsのテスト参照無視 | E-02 (L186-188, L205-210) ignore-test-references? | ○ |
| C-54 | find-dependency-cyclesの循環検出 | E-02 (L243-286) find-dependency-cycles定義 | ○ |
| C-55 | find-dependency-cyclesの循環なし判定 | E-02 (L282-285) dfs-visit処理 | ○ |
| C-56 | find-dependency-cyclesの外部依存除外 | E-02 (L248-250) internal-namespaces | ○ |
| C-57 | find-dependency-cyclesの空グラフ処理 | E-02 (L282-285) doseq処理 | ○ |
| C-58 | cyclic-dependenciesの診断生成 | E-02 (L288-312) cyclic-dependencies定義 | ○ |
| C-59 | cyclic-dependenciesのlevel :off処理 | E-02 (L291-292) when-not条件 | ○ |
| C-60 | cyclic-dependenciesの名前空間除外 | E-02 (L294, L299) exclude-namespaces | ○ |
| C-61 | orphansの孤立定義検出 | E-02 (L162-177) orphans定義 | ○ |
| C-62 | orphansの参照あり除外 | E-02 (L177) remove処理 | ○ |
| C-63 | orphansの空定義リスト処理 | E-02 (L166) set処理 | ○ |
| C-64 | exclude-public-diagnostic-definition?のregex除外 | E-02 (L137-160) exclude-public-diagnostic-definition?定義 | ○ |
| C-65 | exclude-public-diagnostic-definition?のcomment除外 | E-02 (L144-145) inside-comment? | ○ |
| C-66 | exclude-public-diagnostic-definition?のexport除外 | E-02 (L155) :export条件 | ○ |
| C-67 | exclude-public-diagnostic-definition?のmeta除外 | E-02 (L154) excluded-metas | ○ |
| C-68 | exclude-public-diagnostic-definition?のgen-class除外 | E-02 (L156-160) starts-with-dash? | ○ |

### custom.clj 関連テストケース

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | analyze-uris!でカスタムリンター実行 | E-03 (L127-147) analyze-uris!定義 | ○ |
| C-70 | analyze-uris!で複数リンター実行 | E-03 (L134-144) reduce処理 | ○ |
| C-71 | analyze-uris!で無効levelスキップ | E-03 (L135) contains? levels条件 | ○ |
| C-72 | analyze-uris!のリンター未設定処理 | E-03 (L131-132) seq条件 | ○ |
| C-73 | analyze-uri!で単一URI診断 | E-03 (L149-151) analyze-uri!定義 | ○ |
| C-74 | analyze-paths!でパス指定診断 | E-03 (L153-156) analyze-paths!定義 | ○ |
| C-75 | db-with-resultsで結果マージ | E-03 (L158-161) db-with-results定義 | ○ |
| C-76 | missing-required-fieldsの欠損検出 | E-03 (L36-38) missing-required-fields定義 | ○ |
| C-77 | missing-required-fieldsの完備判定 | E-03 (L37) seq条件 | ○ |
| C-78 | missing-required-fieldsのrange検証 | E-03 (L34, L38) required-range-fields | ○ |
| C-79 | custom-diagnostic->lspの変換処理 | E-03 (L40-47) custom-diagnostic->lsp定義 | ○ |
| C-80 | custom-diagnostic->lspの0-indexed変換 | E-03 (L43-46) dec処理 | ○ |
| C-81 | custom-diagnostic->lspのlevel変換 | E-03 (L47) level->severity | ○ |
| C-82 | file-content-from-classpathのJAR読み込み | E-03 (L20-31) file-content-from-classpath定義 | ○ |
| C-83 | file-content-from-classpathのディレクトリ読み込み | E-03 (L29-30) file-exists?条件 | ○ |
| C-84 | file-content-from-classpathのファイル未発見 | E-03 (L28, L31) recur処理 | ○ |
| C-85 | file-content-from-classpathの空classpath | E-03 (L21-22) when head条件 | ○ |
| C-86 | analyzeのリンター関数実行 | E-03 (L49-125) analyze定義 | ○ |
| C-87 | analyzeのreg-diagnostic!処理 | E-03 (L97-102) reg-diagnostic!-fn | ○ |
| C-88 | analyzeのエラーハンドリング | E-03 (L118-120) catch Exception | ○ |
| C-89 | analyzeのstdout捕捉 | E-03 (L121-122) out処理 | ○ |
| C-90 | analyzeのstderr捕捉 | E-03 (L123-124) err処理 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし（すべてのテストケースに対してソースコードから根拠を確認済み）

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - カスタムリンター（SCIサンドボックス）: セキュリティサンドボックスの制限内でのリンター実行のため、実環境でのテストが重要
- **0: 低リスク** - ビルトインリンター: ソースコードから直接導出可能な関数群
- **0: 低リスク** - 診断公開機能: 非同期チャンネル経由の公開処理、標準的なパターン

## 6) レビュアーチェックリスト（最小）
- [ ] severity->colorの範囲外値処理（case文にelse節がないため、例外発生の可能性）
- [ ] find-dependency-cyclesのDFSアルゴリズム正確性（循環検出ロジックの妥当性）
- [ ] unused-public-varsの除外ロジック網羅性（複数の除外条件の組み合わせ）
- [ ] カスタムリンターのSCIサンドボックス設定（セキュリティ観点）
- [ ] 非同期チャンネル（diagnostics-chan）の競合状態考慮
- [ ] テスト実行環境でのclasspath設定（file-content-from-classpath関連）
