refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js #6

Closed
jiantw83 wants to merge 60 commits from refactor/nodejs-rewrite-20260626-103443 into develop
Showing only changes of commit 8b92e9739c - Show all commits
+4 -2
View File
@@ -18,10 +18,12 @@ export function categorizeTags(tags, releaseTagNames) {
const keep = new Set(releaseTagNames) const keep = new Set(releaseTagNames)
return tags.map((tag) => { return tags.map((tag) => {
if (isEmptyOrNull(tag.name)) { // 防禦 null/非物件 tag 與非字串 name:一律歸為 skip,避免後續存取或比對時出錯。
const name = tag?.name
if (typeof name !== 'string' || isEmptyOrNull(name)) {
return { tag, action: 'skip' } return { tag, action: 'skip' }
} }
Ghost marked this conversation as resolved
Review

嚴重等級🟡 警告
審查員:Mage
問題:categorizeTags 函式中直接呼叫 keep.has(tag.name),若 API 回傳的 tag 物件缺少 name 欄位或 name 為非字串,可能導致非預期行為。
建議:增加明確的型別檢查,確保 tag.name 為 string 後再進行比對。

**嚴重等級**:🟡 警告 **審查員**:Mage **問題**:categorizeTags 函式中直接呼叫 keep.has(tag.name),若 API 回傳的 tag 物件缺少 name 欄位或 name 為非字串,可能導致非預期行為。 **建議**:增加明確的型別檢查,確保 tag.name 為 string 後再進行比對。
if (keep.has(tag.name)) { if (keep.has(name)) {
return { tag, action: 'keep' } return { tag, action: 'keep' }
} }
return { tag, action: 'delete' } return { tag, action: 'delete' }
3