feat(建問題模式): 審查留言改發到 issue、跳過舊留言處理並回貼 PR 連結
This commit is contained in:
+48
-4
@@ -302,7 +302,7 @@ function othersComment(findings) {
|
||||
* @param {string} [params.prBody] - PR 描述原文;nullish 或 trim 後為空時輸出佔位文字。
|
||||
* @returns {string} 完整 issue 本文 Markdown 字串(含 MARK 隱藏標記)。
|
||||
* @remarks
|
||||
* 使用情境:建問題模式下 `createIssueWithFindings`(src/lib/review.js)建立 issue 時,
|
||||
* 使用情境:建問題模式下 `main()`(src/index.js)的 `ensureIssueCreated` 建立 issue 時,
|
||||
* 以「標題=PR 標題、本文=本函式輸出」呼叫 `gitea.createIssue`,
|
||||
* 讓 issue 讀者能從本文回溯到觸發審查的 PR,再從下方留言逐條查看問題明細。
|
||||
*/
|
||||
@@ -334,9 +334,9 @@ ${body || '(PR 無描述)'}
|
||||
* @param {string} [finding.suggestedCode] - 建議寫法程式碼;有值才輸出「建議寫法」區塊。
|
||||
* @returns {string} 完整留言 Markdown 字串(含 MARK 隱藏標記)。
|
||||
* @remarks
|
||||
* 使用情境:建問題模式下 `createIssueWithFindings`(src/lib/review.js)建立 issue 後,
|
||||
* 把保留的 findings 依「檔案路徑→嚴重等級→起始行」排序,逐條以本函式產生留言內容、
|
||||
* 經 `gitea.createCommentOnIssue` 發布到新 issue 上,作為問題明細的追蹤紀錄。
|
||||
* 使用情境:建問題模式下 `review.postSevereToIssue`(src/lib/review.js)把每條嚴重 finding
|
||||
* 以本函式產生留言內容、經 `gitea.createCommentOnIssue` 發布到追蹤 issue 上,
|
||||
* 作為問題明細的追蹤紀錄。
|
||||
*/
|
||||
function issueFindingComment(finding) {
|
||||
const emoji = SEVERITY_EMOJI[finding.severity] || '🔵';
|
||||
@@ -383,6 +383,48 @@ function nothingToReviewComment(ignoredCount) {
|
||||
本次 PR 套用 \`.reviewignore\` 後**沒有可審查的變更**${ignoredCount > 0 ? `(${ignoredCount} 個檔案被排除)` : ''},視為審查通過。`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 產生建問題模式(input: create-issue)下,回貼到「PR」的追蹤問題連結留言。
|
||||
*
|
||||
* 建問題模式把審查內容全部發到 issue、不留在 PR;本留言是 PR 上唯一的一則審查留言,
|
||||
* 提供 issue 連結與問題數量統計,讓 PR 讀者一眼看到「本次審查結果在哪個 issue」。
|
||||
*
|
||||
* @param {Object} params - 解構參數。
|
||||
* @param {number} params.issueNumber - 追蹤問題的 issue 編號;內插為 Markdown 連結文字。
|
||||
* @param {string} params.issueUrl - 追蹤問題的 issue 網址;作為 Markdown 連結目標。
|
||||
* @param {number} params.severeCount - 嚴重問題條數,顯示在統計。
|
||||
* @param {number} params.otherCount - 警告+建議問題條數,顯示在統計。
|
||||
* @returns {string} 完整留言 Markdown 字串(含 MARK 隱藏標記)。
|
||||
* @remarks
|
||||
* 使用情境:建問題模式下 `main()`(src/index.js)在 issue 建立並寫入全部審查內容後,
|
||||
* 以本函式對 PR 留一則連結留言,達成「問題關聯回 PR」;issue 內文另以
|
||||
* {@link issueBody} 反向引用 `PR #N`,形成雙向交叉連結。
|
||||
*/
|
||||
function issueLinkComment({ issueNumber, issueUrl, severeCount, otherCount }) {
|
||||
return `${MARK}
|
||||
## 🔍 AI Code Review|已建立追蹤問題
|
||||
|
||||
本次審查結果已彙整到 issue [#${issueNumber}](${issueUrl})(🔴 嚴重 ${severeCount} 條、🟠🔵 警告+建議 ${otherCount} 條),請至該問題追蹤與討論。`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 產生「已審查但無需保留問題」時,回貼到「PR」的審查通過留言。
|
||||
*
|
||||
* 建問題模式下,若防守方裁決後沒有任何保留問題(不值得為此開 issue),
|
||||
* 以本留言在 PR 上告知審查通過,取代原本會發到 issue 的問題內容。
|
||||
*
|
||||
* @returns {string} 完整留言 Markdown 字串(含 MARK 隱藏標記)。
|
||||
* @remarks
|
||||
* 使用情境:建問題模式下 `main()`(src/index.js)於防守方裁決後
|
||||
* `kept.length === 0` 時呼叫;此情況不建立 issue,僅在 PR 留下本則通過提示。
|
||||
*/
|
||||
function noFindingsComment() {
|
||||
return `${MARK}
|
||||
## ✅ AI Code Review|審查通過
|
||||
|
||||
本次 AI Code Review 未發現需保留的問題,視為審查通過。`;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
MARK,
|
||||
OUTDATED_PREFIX,
|
||||
@@ -397,4 +439,6 @@ module.exports = {
|
||||
issueBody,
|
||||
issueFindingComment,
|
||||
nothingToReviewComment,
|
||||
issueLinkComment,
|
||||
noFindingsComment,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user