Files
ai-pull-request/.gitea/ai-review/findings.json
T
2026-06-26 14:14:30 +08:00

46 lines
2.3 KiB
JSON

[
{
"level": "critical",
"role": "Maya",
"location": "app/index.js:1, 14, 52, 58",
"problem": "核心邏輯缺乏自動化測試。包含 main 入口點、自動解衝突流程、以及 `createPull` 錯誤處理與 fallback 機制均未受測試驗證,難以保證建置與合併的正確性。",
"suggestion": "建立完整的單元與整合測試架構。Mock `Git`、`GiteaClient` 與 `OpenCode` 類別,針對 main() 覆蓋成功路徑與合併衝突的失敗路徑,並增強對 API 回傳錯誤的解析與處理。"
},
{
"level": "critical",
"role": "Maya/Mage",
"location": "app/lib/git.js:93, 106",
"problem": "Git 衝突偵測與狀態復原邏輯缺乏測試。`detectConflict` 若行為預期外或 abort 失敗,將導致工作區殘留錯誤狀態,且未經測試驗證。",
"suggestion": "針對 `Git.detectConflict` 補寫單元測試(模擬衝突場景)。在 `finally` 區塊中,增加檢查分支是否存在再進行刪除,確保環境乾淨。"
},
{
"level": "warning",
"role": "Maya",
"location": "app/index.js:114, 126, 154",
"problem": "diff 截斷邏輯、fallbackSummary 邊界處理缺乏測試。(分支名稱長度 Magic Number 已抽為具名常數 MAX_BRANCH_STEM_LENGTH。)",
"suggestion": "補上針對 truncateDiff 及 commitMessages 為空/null 時的測試案例。"
},
{
"level": "warning",
"role": "Assassin",
"location": "Dockerfile:11",
"problem": "Dockerfile 中使用全域 `npm install` 存在供應鏈風險。",
"suggestion": "使用 lockfile(如 `package-lock.json`)確保依賴版本一致性,並定期審查更新。"
},
{
"level": "warning",
"role": "Maya",
"location": "app/lib/opencode.js:130, app/lib/gitea.js:56",
"problem": "fallback 機制與 Gitea API 狀態碼處理(422/409)缺乏測試,難以確保產出品質與正確行為。",
"suggestion": "補寫 OpenCode.summarize 與 GiteaClient.createPull 測試,Mock 不同情境回應,驗證系統邏輯。"
},
{
"level": "info",
"role": "Maya",
"location": "app/lib/opencode.js:176",
"problem": "缺乏單元測試驗證 `extractResult` 對非標準 JSON 的解析能力。",
"suggestion": "補上單元測試,驗證 extractResult 能否正確解析壞 JSON。",
"is_new": false
}
]