[ { "level": "critical", "role": "Mage", "location": "app/lib/git.js:147, 154", "problem": "在 `createResolveBranch` 中使用 `git add -A` 與 `git commit` 會強制提交包括未追蹤檔案在內的所有變更,可能污染分支且掩蓋衝突內容。且此流程缺乏測試。", "suggestion": "僅針對衝突檔案(`--diff-filter=U`)執行 `git add`,並補上整合測試,驗證模擬衝突時,產生的分支確實包含正確的衝突標記與檔案。" }, { "level": "critical", "role": "Maya", "location": "app/index.js:1, 58", "problem": "核心邏輯(涉及分支操作、API 交互、AI 分析)完全缺乏自動化測試。且 `createResolveBranch` 產生的分支缺乏邏輯處理衝突檔案,亦無測試驗證分支建立及提交內容。", "suggestion": "必須建立測試目錄,導入測試框架(如 Jest 或 Mocha),並至少為 lib/ 下的工具類與 index.js 的核心邏輯增加單元測試。應補上整合測試,驗證 detectConflict 能偵測衝突,且 createResolveBranch 產生的分支確實包含預期的衝突檔案與 commit。" }, { "level": "critical", "role": "Maya", "location": "app/lib/git.js:106", "problem": "detectConflict 函式在執行 git 合併失敗後的 abort 嘗試若失敗,會導致工作區殘留錯誤狀態,且未經測試驗證。", "suggestion": "增加測試案例來模擬 git 合併失敗與 abort 失敗的場景,確保狀態正確復原。" }, { "level": "warning", "role": "Maya", "location": "app/index.js:114, 126", "problem": "diff 截斷邏輯與 fallbackSummary 處理邊界情況缺乏測試。", "suggestion": "補上針對 truncateDiff 及 commitMessages 為空/null 時的測試案例。" }, { "level": "info", "role": "Maya", "location": "app/index.js:150", "problem": "缺乏測試案例驗證 fallbackSummary 的結果是否符合預期格式。", "suggestion": "補上單元測試,驗證 fallbackSummary 在不同輸入下的產出格式。" }, { "level": "info", "role": "Maya", "location": "app/lib/opencode.js:176", "problem": "缺乏單元測試驗證 `extractResult` 對非標準 JSON 的解析能力。", "suggestion": "補上單元測試,驗證 extractResult 能否正確解析壞 JSON。" }, { "level": "info", "role": "Assassin", "location": "app/lib/opencode.js:77", "problem": "呼叫外部指令時傳遞整個 `process.env`,導致敏感環境變數暴露。", "suggestion": "應明確篩選並只傳遞必要環境變數。" } ]