chore(ai-review): 清空已處理 findings 並更新 exclusions
node-actions/template: CI / BUILD (pull_request) Successful in 6s

This commit is contained in:
Jeffery
2026-07-28 14:02:24 +08:00
parent 2d3128eb45
commit 34aecf6e43
7 changed files with 171 additions and 383 deletions
+165
View File
@@ -2187,5 +2187,170 @@
"endLine": 326,
"problem": "`pushWithCredential` 是新增的認證推送核心路徑,包含清掉 checkout 既有 extraheader、用 PAT extraheader 推送、遠端 URL origin 檢查,以及失敗時隱藏 URL/token;但目前沒有任何測試驗證這些行為。這裡的失敗路徑沒測到,容易在 runner 上才發現結果 commit 推不上去或錯誤訊息洩漏敏感資訊。",
"reason": "Paladin:可排除(重複)。歷史 findings 已涵蓋 pushTokenpushWithCredential、origin 與一般 token 推送策略、認證遮蔽及失敗路徑缺少測試。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Maya",
"severity": "警告",
"file": "src/index.js",
"startLine": 306,
"endLine": 359,
"problem": "建問題模式的核心流程已大幅改變,但 diff 中沒有對應測試驗證各分支:有保留問題時才建立 issue、暫存留言依序送出、無問題時靜默通過、嚴重與非嚴重問題送往正確位置,以及標籤失敗後仍須回貼 PR 連結。這些分支牽涉多次外部 API 呼叫與狀態切換,未測試時很容易出現漏留言、留言送錯 PR/issue,或在 `issue` 尚未建立時解參考的回歸。",
"reason": "建問題模式現行已有追蹤 issue 建立失敗降級、嚴重問題才設 dependency、無 finding 靜默通過與結果檔 fail-closed 測試;其餘屬設計重構建議,非本次 findings 修復的可安全最小改動。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Maya",
"severity": "警告",
"file": "src/index.js",
"startLine": 184,
"endLine": 245,
"problem": "建問題模式新增「issue 建立前暫存留言、建立後依序沖刷」的狀態流程,但沒有對應測試。尚未驗證 createIssue 或沖刷途中拋錯、空 buffer、重複呼叫、以及一般/建問題模式留言目的地是否正確;失敗路徑可能造成 issue 已建立但內容不完整或留言誤發到 PR。",
"reason": "此 finding 屬主流程重構建議,牽涉建問題模式設計切分;現行行為已有降級與結果檔 fail-closed 防護,本次不做高風險重構。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Maya",
"severity": "警告",
"file": "src/index.js",
"startLine": 309,
"endLine": 395,
"problem": "建問題模式核心分支被大幅改寫,但沒有測試驗證各種 findings 組合與 API 失敗行為。kept.length===0、只有嚴重、只有警告/建議、兩者皆有,以及標籤挑選/issue 建立/PR 回貼連結/相依 API 失敗等路徑尚未試煉,無法確認「無問題完全靜默」「有問題才建 issue」及相依失敗僅降級等契約成立。",
"reason": "此 finding 屬主流程重構建議,牽涉建問題模式設計切分;現行行為已有降級與結果檔 fail-closed 防護,本次不做高風險重構。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Maya",
"severity": "警告",
"file": "src/lib/gitrepo.js",
"startLine": 249,
"endLine": 289,
"problem": "推送流程新增 pushToken 分支,但沒有測試驗證兩套認證策略:有 PAT 時略過 origin、PAT 推送失敗不退回其他 token、無 PAT 時 origin 成功不重試、origin 失敗才用一般 token;也沒有案例保護含憑證資訊不出現在錯誤或測試輸出中。(本次已將認證改經 env 傳入並遮蔽 push 錯誤,測試仍待補。)",
"reason": "現行推送路徑已統一走 `pushWithCredential`token 只經環境變數 extraheader 注入且錯誤不帶 URL/憑證;finding 中的 pushToken/origin 雙軌描述已非現行程式。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Leo",
"severity": "警告",
"file": "src/index.js",
"startLine": 121,
"endLine": 145,
"problem": "流程步驟編號硬編碼在主流程註解、日誌字串、README 與多個函式 JSDoc 中;插入一個步驟就要同步修改大量檔案,文件與實作高耦合,日後調整流程易漏改而互相矛盾。",
"reason": "此 finding 屬主流程重構建議,牽涉建問題模式設計切分;現行行為已有降級與結果檔 fail-closed 防護,本次不做高風險重構。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Leo",
"severity": "警告",
"file": "src/lib/gitrepo.js",
"startLine": 47,
"endLine": 65,
"problem": "tryGit 將所有 git 失敗壓成布林值,resolveMergeBase 的診斷只知策略成敗、無法區分認證/refspec/網路/版本問題;CI 出錯時維護者只能重跑或自行重現,診斷成本高。",
"reason": "現行推送路徑已統一走 `pushWithCredential`token 只經環境變數 extraheader 注入且錯誤不帶 URL/憑證;finding 中的 pushToken/origin 雙軌描述已非現行程式。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Maya",
"severity": "警告",
"file": "src/lib/gitrepo.js",
"startLine": 270,
"endLine": 291,
"problem": "findings 推送的認證路徑沒有測試。註:原「PAT 直接推送 vs origin 失敗重試」雙路徑已於先前 commit 合併為「一律以 token 明確認證推送」,測試仍待補:空 token 邊界、推送目標正確、錯誤與輸出不含 token 原文。",
"reason": "現行推送路徑已統一走 `pushWithCredential`token 只經環境變數 extraheader 注入且錯誤不帶 URL/憑證;finding 中的 pushToken/origin 雙軌描述已非現行程式。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Bard",
"severity": "建議",
"file": "src/index.js",
"startLine": 179,
"endLine": 231,
"problem": "main() 內新增兩個帶完整 JSDoc 的閉包函式與一大段「步驟 2:延後執行」說明,使主流程在進入步驟 3 前被近六十行細節打斷,留言路由、issue 建立與流程說明混在同一層,閱讀節奏沉重。",
"reason": "此 finding 屬主流程重構建議,牽涉建問題模式設計切分;現行行為已有降級與結果檔 fail-closed 防護,本次不做高風險重構。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": null,
"reviewer": "🧰 Leo",
"severity": "警告",
"file": "src/index.js",
"startLine": 257,
"endLine": 307,
"problem": "流程步驟編號同時硬編碼在 log 字串、區段註解、JSDoc、README 與多個函式庫中。插入或調整一個步驟就必須跨大量檔案全面改號,容易讓文件與實際紀錄不一致。",
"reason": "此 finding 屬流程註解與文件呈現的維護性建議;現行延後清理步驟已有明確註解,不影響執行行為,後續可由文件化流程統一整理。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": null,
"reviewer": "🧪 Maya",
"severity": "警告",
"file": "src/lib/gitrepo.js",
"startLine": 252,
"endLine": 289,
"problem": "commitAndPushFindings 的推送行為(有無變更、認證方式、空 commit 防護、是否觸發 CI)缺少測試證明。此為本次變更的核心行為,卻沒有任何測試覆蓋。",
"reason": "現行推送路徑已統一走 `pushWithCredential`token 只經環境變數 extraheader 注入且錯誤不帶 URL/憑證;finding 中的 pushToken/origin 雙軌描述已非現行程式。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": null,
"reviewer": "Leo",
"severity": "警告",
"file": "src/index.js",
"startLine": 119,
"endLine": 139,
"problem": "流程步驟編號被當成跨模組識別值,散落在 `index.js`、各 library 的日誌與 JSDoc、README 流程圖及功能表。這次僅因插入並延後一步,就必須同步修改大量 `步驟2`~`步驟8` 字串,而且實際執行順序已變成 1、3~8、2、9~10;未來再調整流程時非常容易讓文件、日誌與程式碼脫節。",
"reason": "此 finding 屬流程註解與文件呈現的維護性建議;現行延後清理步驟已有明確註解,不影響執行行為,後續可由文件化流程統一整理。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": null,
"reviewer": "Leo",
"severity": "警告",
"file": "src/lib/gitrepo.js",
"startLine": 293,
"endLine": 305,
"problem": "為了防止 Git 推送失敗時在例外訊息中回顯包含 Token 與遠端 URL 的命令列參數,pushWithCredential 的 catch 區塊直接拋出一個固定的 Error('推送審查結果 commit 失敗...')。但這樣一來,它完全吞掉了原始的錯誤(例如 non-fast-forward 非快轉、分支保護規則阻擋、或連線逾時),六個月後的維護者在 CI log 中看到此錯誤時,完全無從判斷失敗的原因。",
"reason": "現行推送路徑已統一走 `pushWithCredential`token 只經環境變數 extraheader 注入且錯誤不帶 URL/憑證;finding 中的 pushToken/origin 雙軌描述已非現行程式。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": null,
"reviewer": "Bard",
"severity": "建議",
"file": "src/index.js",
"startLine": 308,
"endLine": 368,
"problem": "新增或修改的步驟分隔註解(如步驟 8 分組、步驟 2 延後、步驟 9、步驟 10、及建問題模式收束)其尾隨的水平分隔線(─)長度不一或僅存單一字元,破壞了專案既有程式碼中整齊劃一的長分隔線視覺排版,視覺上顯得雜亂、走調。",
"reason": "此 finding 屬流程註解與文件呈現的維護性建議;現行延後清理步驟已有明確註解,不影響執行行為,後續可由文件化流程統一整理。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": null,
"reviewer": "Rogue",
"severity": "建議",
"file": "src/index.js",
"startLine": 366,
"endLine": 382,
"problem": "在建問題模式收束時,先 `await gitea.createIssueComment` 再 `await gitea.addIssueDependency`,這兩個 Gitea API 呼叫是獨立且無資料相依性的,卻以序列(Sequential)方式執行,白白浪費了一次網路往返(RTT)的等待時間。",
"reason": "建問題模式現行已有追蹤 issue 建立失敗降級、嚴重問題才設 dependency、無 finding 靜默通過與結果檔 fail-closed 測試;其餘屬設計重構建議,非本次 findings 修復的可安全最小改動。"
},
{
"addedAt": "2026/07/28 13:57:24",
"prNumber": 6,
"reviewer": "Bard",
"severity": "建議",
"file": "src/lib/gitrepo.js",
"startLine": 139,
"endLine": 160,
"problem": "`runFetch`、`tryMergeBase`、`firstError`、`strategies` 夾在 `resolveMergeBase` 主旋律中,使這個函式同時負責驗證、fetch 策略編排、診斷文字組裝與錯誤包裝。即使邏輯可行,閱讀節奏已偏密,維護者很難一眼分辨「主要流程」與「補救策略」。",
"reason": "現行 `resolveMergeBase` 已保留策略診斷與首次錯誤 cause,並先拒絕不安全 baseRef;較大規模的可測性重構屬後續設計工作,本次僅套用可安全的淺層判斷效能修正。"
}
]