ai-review-resolve/20260623-153635
ai-review-resolve/20260623-110950
修正「Review 只顯示統計數字、看不到問題內容」的根因:問題的 location 若只有檔名、沒有行號,parseLocation 無法解析 → 無法產生行內 review comment(commentable=0)。本 PR 從兩個層面確保每條問題都帶行號。
location
parseLocation
commentable=0
app/roles.js
buildAnalysisPrompt
檔案路徑:行號
buildLocateLinePrompt(role)
{"line": 數字}
app/findings.js
resolveMissingLineNumbers(findings, diff)
role
extractFileDiff
MAX_LOCATE_ATTEMPTS=3
檔案:行號
app/main.js
resolveMissingLineNumbers(newFindings, diff)
roles.test.js
buildLocateLinePrompt
findings.test.js
comments.test.js
README.md
node --test app/*.test.js
🔍 服務:opencode 模型:gemini-2.5-flash
本次審查(opencode / gemini-2.5-flash,共 8 次呼叫)
剩餘可用
剩餘可用:無法計算百分比(自架服務,無帳號額度概念)
@@ -228,0 +280,4 @@
assert.equal(findings[0].location, 'app/y.js'); // 仍保留檔名
assert.equal(n, 3); // 嘗試 3 次後放棄
});
嚴重等級:🟡 警告 審查員:Maya 問題:在測試 resolveMissingLineNumbers 時,僅測試了 chatFn 成功回傳有效或無效行號的情況,但未測試 chatFn 拋出例外(Exception)的失敗情境。 建議:補上 chatFn throw error 的測試案例,驗證該函數是否能妥善處理例外並正確記錄警告資訊,而非讓整個執行流程中斷。
resolveMissingLineNumbers
chatFn
No dependencies set.
The note is not visible to the blocked user.
變更摘要
修正「Review 只顯示統計數字、看不到問題內容」的根因:問題的
location若只有檔名、沒有行號,parseLocation無法解析 → 無法產生行內 review comment(commentable=0)。本 PR 從兩個層面確保每條問題都帶行號。影響範圍與重點檔案
app/roles.js:buildAnalysisPrompt強化 location 規則——每條問題必須是檔案路徑:行號(單一行號、不可只給檔名、不可逗號列多檔)。buildLocateLinePrompt(role):當某問題缺行號時,用來請原角色對照該檔 diff 回{"line": 數字}。app/findings.js:新增resolveMissingLineNumbers(findings, diff)——掃出「只有檔名、缺行號」的問題,反問原角色(依 finding 的role載入)、附該檔 diff 區段(extractFileDiff,省 token),重複嘗試直到取得有效行號;每條最多MAX_LOCATE_ATTEMPTS=3次以避免無限迴圈,成功補成檔案:行號,連續失敗則保留檔名並記錄警告。app/main.js:Step5 角色分析後、合併前呼叫resolveMissingLineNumbers(newFindings, diff),log 顯示「補行號: X/Y 筆成功定位」。roles.test.js(行號必填規則、buildLocateLinePrompt)、findings.test.js(補行號、重試到成功、重試耗盡保留檔名,及誤報裁決/排除邊界)、comments.test.js(新舊統計+舊問題不行內標註)。README.md:新增設計第 15 點。風險與注意事項
node --test app/*.test.js全數通過。ai-review-resolve/20260623-110950為 base(stacked 子 PR),合併後隨母分支進入 PR #42 → develop。🤖 AI Code Review 團隊
AI Code Review 統計
🤖 AI 助理使用量
本次審查(opencode / gemini-2.5-flash,共 8 次呼叫)
剩餘可用
剩餘可用:無法計算百分比(自架服務,無帳號額度概念)
@@ -228,0 +280,4 @@assert.equal(findings[0].location, 'app/y.js'); // 仍保留檔名assert.equal(n, 3); // 嘗試 3 次後放棄});嚴重等級:🟡 警告
審查員:Maya
問題:在測試
resolveMissingLineNumbers時,僅測試了chatFn成功回傳有效或無效行號的情況,但未測試chatFn拋出例外(Exception)的失敗情境。建議:補上
chatFnthrow error 的測試案例,驗證該函數是否能妥善處理例外並正確記錄警告資訊,而非讓整個執行流程中斷。