Files
ai-pull-request/.gitea/ai-review/findings.json
T
2026-06-26 13:58:46 +08:00

40 lines
2.5 KiB
JSON

[
{
"level": "critical",
"role": "Mage",
"location": "app/lib/git.js:154",
"problem": "在 `createResolveBranch` 中,執行 `git add -A` 與 `git commit` 會強制提交包括未追蹤檔案在內的所有變更,可能污染分支且掩蓋衝突內容,此流程亦缺乏測試。",
"suggestion": "僅針對衝突檔案(`--diff-filter=U`)執行 `git add`,並補上整合測試,驗證模擬衝突時,產生的分支確實包含正確的衝突標記與檔案。"
},
{
"level": "critical",
"role": "Maya",
"location": "app/index.js:58",
"problem": "在偵測到衝突並建立解衝突分支後,程式雖然嘗試透過 `git.createResolveBranch` 建立並 commit 衝突檔案,但後續缺乏邏輯處理衝突檔案,亦無測試驗證「自動解衝突分支是否真的被建立」以及「提交的內容是否正確」。",
"suggestion": "應補上整合測試,模擬合併衝突,驗證 `detectConflict` 能偵測衝突,且 `createResolveBranch` 產生的分支確實包含預期的衝突檔案與 commit。"
},
{
"level": "info",
"role": "Leo",
"location": "app/lib/git.js:107",
"problem": "detectConflict 使用固定名稱的暫存分支(__conflict_check_${target}),若程式意外中斷可能導致分支殘留,下次執行可能引發命名衝突或狀態異常。",
"suggestion": "建議在分支名稱中加入隨機字串(如 uuid 或時間戳),並確保在 finally 區塊中有強制清理該分支的機制。",
"is_new": true
},
{
"level": "info",
"role": "Maya",
"location": "app/index.js:150",
"problem": "對於 `fallbackSummary` 函數,當 opencode 產生摘要失敗時會觸發,但目前缺乏測試案例驗證在各種輸入下,fallback 的結果是否符合預期格式。",
"suggestion": "補上單元測試,驗證 `fallbackSummary` 在不同輸入下(如為空、多行訊息、stat 為空)產生的標題與描述格式是否正確。"
},
{
"level": "info",
"role": "Maya",
"location": "app/lib/opencode.js:176",
"problem": "`extractResult` 函數處理 JSON 解析與清理邏輯,雖然複雜,但目前沒有單元測試驗證其對「LLM 容易輸出的各種非標準 JSON」的處理能力(例如字串內含未跳脫換行)。",
"suggestion": "補上單元測試,提供幾種 LLM 常見的「壞」JSON 格式,驗證 `extractResult` 能否正確解析出 `title` 與 `description`。",
"is_new": true
}
]