cmd/opencodereview/scan_cmd.go — 全檔掃描

不需 Git diff 的整檔評審
檔案:cmd/opencodereview/scan_cmd.go(8,096 bytes)

大方向

scan_cmd.go 定義 ocr scan。與 review 最大的不同:沒有 diff provider。scan 直接讀工作樹中每個檔案的目前內容,交給 scan 專用模板(scan_template.json)與 agent 評審。適合審計陌生 codebase 或沒有有意義 diff 的目錄。


1. 選項與路徑解析

scanOptions 結構 · splitPaths() scan_cmd.go收集旗標;把逗號分隔的 --path 拆成 slice。

scanOptions 收集 --path--exclude--preview 等。splitPaths"internal/agent,internal/llm/client.go" 拆成 []string——預設(空)表示整個倉庫。

2. 執行

executeScan(opts) scan_cmd.go依路徑列舉檔案、載入 scan 模板、跑 scan agent、渲染輸出。

executeReview 結構相似但更輕:解析端點 → 用 scan_template.json(scan 專用 prompt,不含 diff 佔位符)組 agent → 跑批次掃描 → 渲染。scan 的 agent 批次邏輯在 internal/scan/(batch、coverage、estimate)。

runScanPreview() · loadScanResumeState() scan_cmd.goscan 的預覽與 resume 支援。

runScanPreview 列舉並過濾檔案(不呼叫 LLM),印出可評審/排除數量、總行數與每個檔的排除原因。loadScanResumeState 支援從中斷的 scan 會話恢復。

看完這頁你應該能說出:scan 與 review 的關鍵差異(無 diff)、splitPaths 的逗號語法、以及 scan 為何用獨立的 scan_template.json。

下一步:internal/agent 或回程式碼對照