test: 整併測試至 app/test 並解決 AI 審查 findings #8
@@ -106,5 +106,11 @@
|
|||||||
"role": "Rogue",
|
"role": "Rogue",
|
||||||
"original_finding": "將 Regex 移至函數外層宣告為常數。",
|
"original_finding": "將 Regex 移至函數外層宣告為常數。",
|
||||||
"reason": "AI 對話收斂判定為誤報(問題在最新程式碼中不成立或不適用)"
|
"reason": "AI 對話收斂判定為誤報(問題在最新程式碼中不成立或不適用)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"location": "app/config.js:62",
|
||||||
|
"role": "Maya",
|
||||||
|
"original_finding": "assertRepository 並未測試所有邊界條件:特殊字元、極長字串段(>100)、完全空白的 value。",
|
||||||
|
"reason": "前提已不成立:app/test/config.test.js 已涵蓋非法字元(空白/星號/冒號)、單段超過 100 字元、缺斜線/多段/空段,空字串則由 requireEnv 先擋下。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user