gitlab-ai-review 3.8.1 → 3.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +31 -8
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -457,30 +457,53 @@ export class GitLabAIReview {
|
|
|
457
457
|
impactAnalysis
|
|
458
458
|
);
|
|
459
459
|
|
|
460
|
+
// 智能合并修改块的评论
|
|
461
|
+
const mergedReviews = this.mergeModificationReviews(fileReview.reviews, meaningfulChanges);
|
|
462
|
+
|
|
460
463
|
// 根据 AI 返回的结果,只对有问题的行添加评论
|
|
461
|
-
for (const review of
|
|
464
|
+
for (const review of mergedReviews) {
|
|
462
465
|
if (review.hasIssue) {
|
|
463
466
|
try {
|
|
467
|
+
// 构建评论位置参数
|
|
468
|
+
const positionParams = {
|
|
469
|
+
filePath: fileName,
|
|
470
|
+
oldPath: change.old_path,
|
|
471
|
+
};
|
|
472
|
+
|
|
473
|
+
// 如果是修改块(同时有 oldLine 和 newLine),同时指定两个行号
|
|
474
|
+
if (review.oldLine && review.newLine) {
|
|
475
|
+
positionParams.oldLine = review.oldLine;
|
|
476
|
+
positionParams.newLine = review.newLine;
|
|
477
|
+
} else if (review.lineNumber) {
|
|
478
|
+
// 单独的删除或新增
|
|
479
|
+
const relatedChange = meaningfulChanges.find(c => c.lineNumber === review.lineNumber);
|
|
480
|
+
const isDeletion = relatedChange && relatedChange.type === 'deletion';
|
|
481
|
+
if (isDeletion) {
|
|
482
|
+
positionParams.oldLine = review.lineNumber;
|
|
483
|
+
} else {
|
|
484
|
+
positionParams.newLine = review.lineNumber;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
464
488
|
const commentResult = await this.gitlabClient.createLineComment(
|
|
465
489
|
this.config.project.projectId,
|
|
466
490
|
this.config.project.mergeRequestIid,
|
|
467
491
|
`🤖 **AI 代码审查**\n\n${review.comment}`,
|
|
468
|
-
|
|
469
|
-
filePath: fileName,
|
|
470
|
-
oldPath: change.old_path,
|
|
471
|
-
newLine: review.lineNumber,
|
|
472
|
-
}
|
|
492
|
+
positionParams
|
|
473
493
|
);
|
|
474
494
|
|
|
475
495
|
results.push({
|
|
476
496
|
status: 'success',
|
|
477
497
|
fileName,
|
|
478
|
-
lineNumber: review.lineNumber,
|
|
498
|
+
lineNumber: review.lineNumber || review.newLine || review.oldLine,
|
|
479
499
|
comment: review.comment,
|
|
480
500
|
commentResult,
|
|
481
501
|
});
|
|
482
502
|
|
|
483
|
-
|
|
503
|
+
const lineDesc = review.oldLine && review.newLine
|
|
504
|
+
? `第 ${review.oldLine}-${review.newLine} 行`
|
|
505
|
+
: `第 ${review.lineNumber} 行`;
|
|
506
|
+
console.log(` ✓ ${lineDesc}:已添加评论`);
|
|
484
507
|
} catch (error) {
|
|
485
508
|
results.push({
|
|
486
509
|
status: 'error',
|