chore(ai-review 狀態): 回寫本輪已處理 findings
This commit is contained in:
@@ -120,20 +120,6 @@
|
||||
"suggestedCode": "",
|
||||
"sourceIssue": 15
|
||||
},
|
||||
{
|
||||
"id": "F015",
|
||||
"reviewer": "Bard",
|
||||
"focus": "",
|
||||
"badge": "🎼",
|
||||
"severity": "建議",
|
||||
"file": "src/lib/gitea.js",
|
||||
"startLine": 190,
|
||||
"endLine": 197,
|
||||
"problem": "`dependency` 作為參數名太薄,與 `issueNumber` 並列時看不出它也是 issue 編號。讀到 `addIssueDependency(ctx, ctx.prNumber, issue.number)` 時,語意要靠上下文補拍子。",
|
||||
"suggestion": "改用更完整的名稱,例如 `dependencyIssueNumber` 或 `blockingIssueNumber`,讓「誰被誰阻擋」在簽名裡就清楚成形。",
|
||||
"suggestedCode": "```\nfunction addIssueDependency(ctx, issueNumber, dependencyIssueNumber) {\n return api(ctx, 'POST', `/repos/${ctx.owner}/${ctx.repo}/issues/${issueNumber}/dependencies`, {\n index: dependencyIssueNumber,\n owner: ctx.owner,\n repo: ctx.repo,\n });\n}\n```",
|
||||
"sourceIssue": 15
|
||||
},
|
||||
{
|
||||
"id": "F022",
|
||||
"reviewer": "Leo",
|
||||
@@ -148,34 +134,6 @@
|
||||
"suggestedCode": "",
|
||||
"sourceIssue": 18
|
||||
},
|
||||
{
|
||||
"id": "F023",
|
||||
"reviewer": "Mage",
|
||||
"focus": "",
|
||||
"badge": "🔮",
|
||||
"severity": "警告",
|
||||
"file": "src/index.js",
|
||||
"startLine": 374,
|
||||
"endLine": 387,
|
||||
"problem": "建問題模式下只要有任何保留 finding 就會建立 issue,且後續一律把 PR 設為相依於該 issue;但收尾結果仍是 `severe.length === 0 ? 'success' : 'failure'`。最小情境:攻擊方只產生 1 條「建議」,`severe.length` 為 0,action commit `[success]`,但 PR 被 issue dependency 擋住無法合併。這讓「success=可通過」與「非嚴重問題也阻擋合併」兩個語義互相矛盾。",
|
||||
"suggestion": "明確對齊語義:若只有嚴重問題才應阻擋合併,則只在 `severe.length > 0` 時建立 dependency;若所有保留問題都要阻擋合併,則 result/exit code 不應只看嚴重問題。",
|
||||
"suggestedCode": "```\nif (severe.length > 0) {\n try {\n await gitea.addIssueDependency(ctx, ctx.prNumber, issue.number);\n log('建問題', 'INF', `已將 PR #${ctx.prNumber} 設為相依於 issue #${issue.number}。`);\n } catch (err) {\n log('建問題', 'WRN', `設定 PR 相依失敗(可能未啟用「問題相依」功能):${err.message}。`);\n }\n}\n```",
|
||||
"sourceIssue": 18
|
||||
},
|
||||
{
|
||||
"id": "F024",
|
||||
"reviewer": "Bard",
|
||||
"focus": "",
|
||||
"badge": "🎼",
|
||||
"severity": "建議",
|
||||
"file": "src/index.js",
|
||||
"startLine": 179,
|
||||
"endLine": 181,
|
||||
"problem": "`issueBuffer` 的旋律太含糊:讀者會以為裡面放的是 issue,實際上暫存的是尚未送出的留言 body。命名沒有把資料形狀唱清楚。",
|
||||
"suggestion": "改成能描述內容與用途的名稱,例如 `pendingIssueCommentBodies`,並同步調整註解與迴圈變數。",
|
||||
"suggestedCode": "```\nconst pendingIssueCommentBodies = [];\nlet issue = null;\n```",
|
||||
"sourceIssue": 18
|
||||
},
|
||||
{
|
||||
"id": "F025",
|
||||
"reviewer": "Assassin",
|
||||
@@ -204,34 +162,6 @@
|
||||
"suggestedCode": "",
|
||||
"sourceIssue": 19
|
||||
},
|
||||
{
|
||||
"id": "F027",
|
||||
"reviewer": "Bard",
|
||||
"focus": "",
|
||||
"badge": "🎼",
|
||||
"severity": "建議",
|
||||
"file": "src/index.js",
|
||||
"startLine": 181,
|
||||
"endLine": 185,
|
||||
"problem": "`issue` 這個變數名太素,像樂譜上只寫「音符」卻不說是哪一聲部。此處承載的是建問題模式建立出的追蹤 issue,後面還會與 PR issue 編號、Gitea issue API 參數交錯出現,名稱過泛會讓閱讀節奏變濁。",
|
||||
"suggestion": "改成能表明角色的名稱,例如 `trackingIssue`。對應的 `ensureIssueCreated` 也可改為 `ensureTrackingIssueCreated`,讓閉包狀態與用途一眼對上。",
|
||||
"suggestedCode": "```\nconst issueBuffer = [];\nlet trackingIssue = null;\n\nconst postComment = async (body) => {\n if (ctx.createIssue) {\n if (trackingIssue) return gitea.createCommentOnIssue(ctx, trackingIssue.number, body);\n issueBuffer.push(body);\n return null;\n }\n const created = await gitea.createIssueComment(ctx, body);\n currentRunCommentIds.add(created.id);\n return created;\n};\n```",
|
||||
"sourceIssue": 19
|
||||
},
|
||||
{
|
||||
"id": "F029",
|
||||
"reviewer": "Bard",
|
||||
"focus": "",
|
||||
"badge": "🎼",
|
||||
"severity": "建議",
|
||||
"file": "src/lib/templates.js",
|
||||
"startLine": 388,
|
||||
"endLine": 405,
|
||||
"problem": "`issueLinkComment` 產生的是 PR 上唯一的建問題模式回貼留言,但名稱少了 PR 的聲部;同檔已有 `issueBody`、`issueFindingComment`,乍看會以為這也是 issue 內留言模板,命名層次不夠分明。",
|
||||
"suggestion": "改名為 `prIssueLinkComment` 或 `trackingIssueLinkComment`,讓模板的投遞位置與用途直接寫在名稱裡,避免與 issue 內文、issue finding 留言混成一團。",
|
||||
"suggestedCode": "```\nfunction prIssueLinkComment({ issueNumber, issueUrl, severeCount, otherCount }) {\n return `${MARK}\n## 🔍 AI Code Review|已建立追蹤問題\n\n本次審查結果已彙整到 issue [#${issueNumber}](${issueUrl})(🔴 嚴重 ${severeCount} 條、🟠🔵 警告+建議 ${otherCount} 條),請至該問題追蹤與討論。`;\n}\n```",
|
||||
"sourceIssue": 19
|
||||
},
|
||||
{
|
||||
"id": "F031",
|
||||
"reviewer": "Leo",
|
||||
@@ -246,34 +176,6 @@
|
||||
"suggestedCode": "",
|
||||
"sourceIssue": 21
|
||||
},
|
||||
{
|
||||
"id": "F032",
|
||||
"reviewer": "Bard",
|
||||
"focus": "",
|
||||
"badge": "🎼",
|
||||
"severity": "建議",
|
||||
"file": "src/index.js",
|
||||
"startLine": 183,
|
||||
"endLine": 224,
|
||||
"problem": "`issue` 與 `issueBuffer` 的命名過於泛泛;在 Gitea 裡 PR 也是 issue,追蹤問題也是 issue,單靠 `issue` 這個名字無法唱出它究竟是哪一個聲部。",
|
||||
"suggestion": "建議改成更具語義的名稱,例如 `trackingIssue`、`trackingIssueCommentBuffer`,讓讀者不用回讀 create-issue 模式的整段脈絡。",
|
||||
"suggestedCode": "```\nlet trackingIssue = null;\nconst trackingIssueCommentBuffer = [];\n```",
|
||||
"sourceIssue": 21
|
||||
},
|
||||
{
|
||||
"id": "F033",
|
||||
"reviewer": "Bard",
|
||||
"focus": "",
|
||||
"badge": "🎼",
|
||||
"severity": "建議",
|
||||
"file": "src/lib/gitea.js",
|
||||
"startLine": 190,
|
||||
"endLine": 194,
|
||||
"problem": "`addIssueDependency(ctx, issueNumber, dependency)` 的兩個參數名稱太相似,且 `dependency` 少了 issue 語義。這支 API 的方向性本來就容易讀錯,命名再模糊就像兩個音符共用同一個名字。",
|
||||
"suggestion": "建議把參數改成能表達方向的名稱,例如 `blockedIssueNumber` 與 `blockingIssueNumber`,呼叫端也會更清楚是誰被誰擋住。",
|
||||
"suggestedCode": "```\nfunction addIssueDependency(ctx, blockedIssueNumber, blockingIssueNumber) {\n return api(ctx, 'POST', `/repos/${ctx.owner}/${ctx.repo}/issues/${blockedIssueNumber}/dependencies`, {\n index: blockingIssueNumber,\n owner: ctx.owner,\n repo: ctx.repo,\n });\n}\n```",
|
||||
"sourceIssue": 21
|
||||
},
|
||||
{
|
||||
"id": "F040",
|
||||
"reviewer": "Assassin",
|
||||
|
||||
Reference in New Issue
Block a user