diff --git a/.gitea/ai-review/exclusions.json b/.gitea/ai-review/exclusions.json index 40996ce..8258309 100644 --- a/.gitea/ai-review/exclusions.json +++ b/.gitea/ai-review/exclusions.json @@ -106,5 +106,11 @@ "role": "Rogue", "original_finding": "將 Regex 移至函數外層宣告為常數。", "reason": "AI 對話收斂判定為誤報(問題在最新程式碼中不成立或不適用)" + }, + { + "location": "app/config.js:62", + "role": "Maya", + "original_finding": "assertRepository 並未測試所有邊界條件:特殊字元、極長字串段(>100)、完全空白的 value。", + "reason": "前提已不成立:app/test/config.test.js 已涵蓋非法字元(空白/星號/冒號)、單段超過 100 字元、缺斜線/多段/空段,空字串則由 requireEnv 先擋下。" } ] diff --git a/.gitea/ai-review/findings.json b/.gitea/ai-review/findings.json index d56e9d4..fe51488 100644 --- a/.gitea/ai-review/findings.json +++ b/.gitea/ai-review/findings.json @@ -1,42 +1 @@ -[ - { - "level": "critical", - "role": "Maya", - "problem": "新增的 `assertRepository` 函數對 `GITEA_REPOSITORY` 的檢查邏輯並未測試到所有邊界條件,例如:包含特殊字元(非字母數字點下底線連字號)、極長字串段(> 100 字元)、以及完全空白的 `value`。", - "suggestion": "請在 `app/test/config.test.js` 中增加針對非法字元、超過 100 字元的字串段,以及空字串的測試案例,確保 `assertRepository` 的防禦性功能完全被驗證。", - "location": "app/config.js:62", - "is_new": false - }, - { - "level": "warning", - "role": "Leo", - "location": "app/releases.js:70", - "problem": "為了處理多位元組字元而使用 Array.from(text),如果回傳的錯誤內容(text)非常巨大(例如幾十 MB 的 HTML 錯誤頁面),會瞬間配置大量記憶體,可能導致效能瓶頸。", - "suggestion": "若預期回應可能非常大,建議先檢查 text.length 是否遠大於限制,或是考慮使用更輕量的字串處理方式來避免不必要的記憶體配置。", - "is_new": true - }, - { - "level": "warning", - "role": "Mage", - "location": "app/releases.js:72", - "problem": "雖然使用 `Array.from(text)` 可以正確處理多位元組字元(避免在 Unicode code point 中間截斷),但此操作會將整個回應內容轉為陣列,若 API 回傳的錯誤回應內容極大(例如數 MB 的 HTML 錯誤頁面),這會導致嚴重的記憶體耗用,甚至造成執行緒卡頓或記憶體溢位 (OOM)。", - "suggestion": "應先對 `text` 進行長度檢查,或者改用 `Buffer` 或 `string.substring()` 搭配適當的 Unicode 感知邏輯來截斷,而不是將完整內容陣列化。", - "is_new": true - }, - { - "level": "warning", - "role": "Maya", - "location": "app/test/releases.test.js:80", - "problem": "新增的 JSON 解析錯誤處理邏輯中,對於回應內容片段(contentSnippet)的生成與截斷行為並未進行驗證。目前的測試僅檢查錯誤訊息是否包含特定字串,未確保截斷邏輯在邊界條件(如超長回應、包含特殊字元)下是否正確。", - "suggestion": "建議在 `app/test/releases.test.js` 中增加針對無法解析 JSON 的測試案例,並具體斷言錯誤訊息中包含預期的片段內容,特別是需要測試超長字串截斷是否符合預期。", - "is_new": true - }, - { - "level": "info", - "role": "Leo", - "location": "app/config.js:63", - "problem": "驗證邏輯 parts.every 內包含過多條件,邏輯稍顯複雜,閱讀起來需要花點時間拆解。", - "suggestion": "將 parts.every 的回呼函數提取為具名函數(例如 isValidPart),以提升代碼的可讀性與未來維護的清晰度。", - "is_new": true - } -] +[]