test(comments review): 抽出嚴重等級解析斷言 #38

Merged
jiantw83 merged 6 commits from ai-review-resolve/20260622-163133 into develop 2026-06-22 16:36:36 +00:00
Showing only changes of commit f8e1b61fc4 - Show all commits
+1 -26
View File
@@ -1,26 +1 @@
[ []
{
"level": "critical",
"role": "Maya",
"location": "app/comments.test.js:6",
"problem": "新增的 `reviewSeverityLabel` 函式,在處理輸入的 `comment` 物件本身為 `null` 或 `undefined`,或是 `comment.body` 屬性為 `null` 或 `undefined` 的邊界情況時,可能會拋出執行時期錯誤(TypeError),目前沒有對應的測試案例來驗證此失敗路徑。",
"suggestion": "建議為 `reviewSeverityLabel` 函式新增測試案例,驗證當 `comment` 為 `null` 或 `undefined`,以及 `comment.body` 為 `null` 或 `undefined` 時,函式能正確地回傳 `undefined` 而不拋出錯誤。同時,也請確保函式實作能妥善處理這些邊界輸入。\n\n例如,可以在 `app/comments.test.js` 的 `describe('postFindingsReview', ...)` 區塊中,為 `reviewSeverityLabel` 函式新增以下測試案例:\n```javascript\nit('handles null or undefined comment/body gracefully', () => {\n assert.equal(reviewSeverityLabel(null), undefined);\n assert.equal(reviewSeverityLabel(undefined), undefined);\n assert.equal(reviewSeverityLabel({}), undefined); // comment.body is undefined\n assert.equal(reviewSeverityLabel({ body: null }), undefined);\n assert.equal(reviewSeverityLabel({ body: undefined }), undefined);\n});\n```\n並調整 `reviewSeverityLabel` 函式實作,例如:\n```javascript\nfunction reviewSeverityLabel(comment) {\n if (!comment || !comment.body) {\n return undefined;\n }\n return comment.body.match(REVIEW_SEVERITY_PATTERN)?.[1];\n}\n```",
"is_new": true
},
{
"level": "warning",
"role": "Leo",
"location": "app/comments.test.js:6",
"problem": "在 `REVIEW_SEVERITY_PATTERN` 和 `REVIEW_SEVERITY_LABELS` 這兩個常數中,嚴重等級的標籤(例如 '🔴 嚴重')被重複定義了。這會導致未來若要修改或新增標籤時,需要同時更新兩處,容易造成維護上的疏漏與不一致。",
"suggestion": "建議將嚴重等級標籤定義為單一來源,例如只維護 `REVIEW_SEVERITY_LABELS` 陣列,然後動態地從這個陣列產生 `REVIEW_SEVERITY_PATTERN` 的正規表達式字串。這樣可以確保兩者永遠同步,降低未來的維護成本。\n\n例如:\n```javascript\nconst REVIEW_SEVERITY_LABELS = ['🔴 嚴重', '🟡 警告', '🔵 建議'];\nconst REVIEW_SEVERITY_PATTERN = new RegExp(`\\\\*\\\\*嚴重等級\\\\*\\\\*(${REVIEW_SEVERITY_LABELS.join('|')})(?:\\\\n|$)`);\n```",
"is_new": true
},
{
"level": "info",
"role": "Bard",
"location": "app/comments.test.js:13",
"problem": "reviewSeverityLabel 函式是專為 `postFindingsReview` 測試區塊服務的輔助函式。將其定義在檔案頂層,而非其所屬的 `describe` 區塊內,可能讓程式碼的組織結構顯得不夠緊密,降低了相關程式碼的局部性。",
"suggestion": "建議將 reviewSeverityLabel 函式及其相關的 REVIEW_SEVERITY_PATTERN 與 REVIEW_SEVERITY_LABELS 常數,一併移至 `describe('postFindingsReview', ...)` 區塊內部,以提升程式碼的內聚性與可讀性,讓相關的旋律能集中演奏。",
"is_new": true
}
]