fix(diagnostics): 處理 ai review findings #32
@@ -119,5 +119,71 @@
|
||||
"endLine": 228,
|
||||
"problem": "`issueBuffer` 內每則留言以 `await` 串行送出,建立 issue 的等待時間會線性累加為約 `留言數 × API RTT`;若每次往返 200~500 ms,6 則留言便額外卡住約 1.2~3 秒。",
|
||||
"reason": "Paladin:可排除(誤判)。此處逐筆 await 用來維持暫存留言的 FIFO 發布順序;留言數量有限,所述短暫延遲不足以證明缺陷,而改成並行反而可能破壞順序並增加 API 限流風險。"
|
||||
},
|
||||
{
|
||||
"addedAt": "2026/07/20 15:44:22",
|
||||
"prNumber": 6,
|
||||
"reviewer": "Leo",
|
||||
"severity": "警告",
|
||||
"file": "src/index.js",
|
||||
"startLine": 179,
|
||||
"endLine": 230,
|
||||
"problem": "建問題模式的狀態管理、留言路由、issue 建立及緩衝區清空都直接塞進已負責整條審查流程的 `main()`,並透過 `issue`、`issueBuffer` 兩個可變閉包共享狀態。後續若再增加重試、不同發布目的地或補償處理,維護者必須同時追蹤閉包狀態與主流程分支;目前 `ensureIssueCreated` 若在逐則寫入緩衝留言時失敗,issue 已建立但狀態沒有可恢復的進度,重跑也可能再建立重複 issue。",
|
||||
"reason": "Paladin:可排除(命中已知排除事項且重複)。已知排除事項已涵蓋 main() 中留言路由、issue 狀態與緩衝佇列職責散落;其中重跑產生重複 issue 的部分也與歷史 finding 相同。"
|
||||
},
|
||||
{
|
||||
"addedAt": "2026/07/20 15:44:22",
|
||||
"prNumber": 6,
|
||||
"reviewer": "Leo",
|
||||
"severity": "建議",
|
||||
"file": "src/lib/gitea.js",
|
||||
"startLine": 171,
|
||||
"endLine": 195,
|
||||
"problem": "新增的 `addLabelsToIssue` 沒有任何呼叫端,註解甚至明確說明主流程已不再使用它。現在就保留這個公開匯出會擴大 Gitea client 的 API 表面,未來維護者仍需替它維護文件、測試與版本相容性,卻沒有實際需求驗證其語意。",
|
||||
"reason": "Paladin:可排除(命中已知排除事項且重複)。已知排除事項已記錄相同的未使用 addLabelsToIssue 函式、公開匯出及移除建議。"
|
||||
},
|
||||
{
|
||||
"addedAt": "2026/07/20 15:44:22",
|
||||
"prNumber": 6,
|
||||
"reviewer": "Mage",
|
||||
"severity": "警告",
|
||||
"file": "src/index.js",
|
||||
"startLine": 216,
|
||||
"endLine": 225,
|
||||
"problem": "追蹤 issue 的建立與暫存留言寫入不是可重入操作:`createIssue` 成功後,只要任一 `createCommentOnIssue` 失敗,主流程就直接中止,但已建立的 issue 不會回滾或留下可供重跑辨識的狀態。最小重現為:建立 issue 成功、第一則留言遇到暫時性 5xx;workflow 重跑後會再建立一張相同 issue,產生孤兒或重複追蹤問題。",
|
||||
"reason": "Paladin:可排除(命中已知排除事項且重複)。issue 建立成功、留言失敗後重跑會建立重複 issue,正是已知排除事項及歷史 finding 已記錄的同一問題。"
|
||||
},
|
||||
{
|
||||
"addedAt": "2026/07/20 15:44:22",
|
||||
"prNumber": 6,
|
||||
"reviewer": "Maya",
|
||||
"severity": "警告",
|
||||
"file": "src/index.js",
|
||||
"startLine": 184,
|
||||
"endLine": 374,
|
||||
"problem": "建問題模式新增了大量分支行為,但本次 diff 沒有對應測試驗證:留言先暫存再依序寫入 issue、無保留問題時靜默通過、標籤挑選失敗時降級、嚴重與非嚴重問題分流、PR 回貼連結,以及建立相依失敗時不中斷流程。這些都是可觀察的核心流程;沒有測試時,任何分支回歸都可能造成漏建 issue、留言送錯位置或流程意外失敗。",
|
||||
"reason": "Paladin:可排除(與歷史 finding 重複)。歷史 finding 已涵蓋建問題模式的暫存留言、靜默通過、問題分流、標籤失敗及 PR 回貼等核心分支缺少測試。"
|
||||
},
|
||||
{
|
||||
"addedAt": "2026/07/20 15:44:22",
|
||||
"prNumber": 6,
|
||||
"reviewer": "Maya",
|
||||
"severity": "警告",
|
||||
"file": "src/lib/gitrepo.js",
|
||||
"startLine": 105,
|
||||
"endLine": 157,
|
||||
"problem": "`resolveMergeBase` 新增多階段 fetch/重試策略,卻沒有測試驗證最容易出錯的淺層歷史與失敗路徑,包括非 shallow repo、`--unshallow` 成功後立即停止、某次 fetch 失敗後繼續下一策略,以及全部失敗時的 diagnostics 與 `cause`。這類命令編排很容易因呼叫順序或 off-by-one 次重試而產生多餘網路請求,甚至在其實可取得 merge-base 時仍失敗。",
|
||||
"reason": "Paladin:可排除(與歷史 finding 重複)。歷史 finding 已指出 resolveMergeBase 多階段 fetch 在淺層、非淺層、降級及最終失敗路徑缺少測試。"
|
||||
},
|
||||
{
|
||||
"addedAt": "2026/07/20 15:44:22",
|
||||
"prNumber": 6,
|
||||
"reviewer": "Maya",
|
||||
"severity": "警告",
|
||||
"file": "src/lib/review.js",
|
||||
"startLine": 17,
|
||||
"endLine": 81,
|
||||
"problem": "新增的 AI CLI 失敗診斷只在失敗與 debug 模式執行,但沒有測試覆蓋其邊界:`res`/`error` 缺值、逾時與 signal、debug 大小寫及空白、控制字元單行化、500 字截斷,以及多種 token/URL 帳密遮罩。這些失敗路徑若回歸,可能使診斷完全缺失或將未遮罩內容寫入 CI log。",
|
||||
"reason": "Paladin:可排除(與歷史 finding 重複)。歷史 finding 已記錄 AI CLI 失敗診斷在退出狀態、空輸出、單行化、截斷及相關邊界缺少測試;本條是對同一測試缺口的細項枚舉。"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user