gitlab-ai-review 4.1.0 → 4.1.1
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 +78 -11
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -16,7 +16,7 @@ import * as ImpactAnalyzer from './lib/impact-analyzer.js';
|
|
|
16
16
|
export class GitLabAIReview {
|
|
17
17
|
constructor(options = {}) {
|
|
18
18
|
this.name = 'GitLab AI Review SDK';
|
|
19
|
-
this.version = '4.1.
|
|
19
|
+
this.version = '4.1.1';
|
|
20
20
|
|
|
21
21
|
// 如果传入了配置,使用手动配置;否则使用自动检测
|
|
22
22
|
if (options.token || options.gitlab) {
|
|
@@ -242,48 +242,86 @@ export class GitLabAIReview {
|
|
|
242
242
|
oldPath: change.old_path,
|
|
243
243
|
};
|
|
244
244
|
|
|
245
|
-
//
|
|
245
|
+
// 构建评论内容,包含完整的修改块上下文
|
|
246
|
+
let commentBody = '🤖 **AI 代码审查**\n\n';
|
|
247
|
+
|
|
248
|
+
// 如果是修改块(同时有 oldLine 和 newLine),显示完整的删除和新增
|
|
246
249
|
if (review.oldLine && review.newLine) {
|
|
247
250
|
positionParams.oldLine = review.oldLine;
|
|
248
251
|
positionParams.newLine = review.newLine;
|
|
252
|
+
|
|
253
|
+
// 添加修改块的上下文
|
|
254
|
+
const oldChange = meaningfulChanges.find(c => c.lineNumber === review.oldLine && c.type === 'deletion');
|
|
255
|
+
const newChange = meaningfulChanges.find(c => c.lineNumber === review.newLine && c.type === 'addition');
|
|
256
|
+
|
|
257
|
+
if (oldChange || newChange) {
|
|
258
|
+
commentBody += '**📝 修改内容:**\n```diff\n';
|
|
259
|
+
if (oldChange) {
|
|
260
|
+
commentBody += `- ${oldChange.content}\n`;
|
|
261
|
+
}
|
|
262
|
+
if (newChange) {
|
|
263
|
+
commentBody += `+ ${newChange.content}\n`;
|
|
264
|
+
}
|
|
265
|
+
commentBody += '```\n\n';
|
|
266
|
+
}
|
|
249
267
|
} else if (review.lineNumber) {
|
|
250
268
|
// 单独的删除或新增
|
|
251
269
|
const relatedChange = meaningfulChanges.find(c => c.lineNumber === review.lineNumber);
|
|
252
270
|
const isDeletion = relatedChange && relatedChange.type === 'deletion';
|
|
271
|
+
|
|
253
272
|
if (isDeletion) {
|
|
254
273
|
positionParams.oldLine = review.lineNumber;
|
|
255
274
|
} else {
|
|
256
275
|
positionParams.newLine = review.lineNumber;
|
|
257
276
|
}
|
|
277
|
+
|
|
278
|
+
// 添加单个变更的上下文
|
|
279
|
+
if (relatedChange) {
|
|
280
|
+
commentBody += `**📝 ${isDeletion ? '删除' : '新增'}内容:**\n\`\`\`${isDeletion ? 'diff' : 'javascript'}\n`;
|
|
281
|
+
commentBody += `${isDeletion ? '-' : '+'} ${relatedChange.content}\n`;
|
|
282
|
+
commentBody += '```\n\n';
|
|
283
|
+
}
|
|
258
284
|
}
|
|
259
285
|
|
|
286
|
+
// 添加 AI 审查意见
|
|
287
|
+
commentBody += review.comment;
|
|
288
|
+
|
|
260
289
|
const commentResult = await this.gitlabClient.createLineComment(
|
|
261
290
|
this.config.project.projectId,
|
|
262
291
|
this.config.project.mergeRequestIid,
|
|
263
|
-
|
|
292
|
+
commentBody,
|
|
264
293
|
positionParams
|
|
265
294
|
);
|
|
266
295
|
|
|
267
296
|
results.push({
|
|
268
297
|
status: 'success',
|
|
269
298
|
fileName,
|
|
270
|
-
lineNumber: review.lineNumber,
|
|
299
|
+
lineNumber: review.lineNumber || review.oldLine,
|
|
271
300
|
comment: review.comment,
|
|
272
301
|
commentResult,
|
|
273
302
|
});
|
|
274
303
|
|
|
275
|
-
|
|
304
|
+
const lineDesc = review.oldLine && review.newLine
|
|
305
|
+
? `第 ${review.oldLine}-${review.newLine} 行(修改块)`
|
|
306
|
+
: `第 ${review.lineNumber} 行`;
|
|
307
|
+
console.log(` ✓ ${lineDesc}:已添加评论`);
|
|
276
308
|
} catch (error) {
|
|
277
309
|
results.push({
|
|
278
310
|
status: 'error',
|
|
279
311
|
fileName,
|
|
280
|
-
lineNumber: review.lineNumber,
|
|
312
|
+
lineNumber: review.lineNumber || review.oldLine,
|
|
281
313
|
error: error.message,
|
|
282
314
|
});
|
|
283
|
-
|
|
315
|
+
const lineDesc = review.oldLine && review.newLine
|
|
316
|
+
? `第 ${review.oldLine}-${review.newLine} 行`
|
|
317
|
+
: `第 ${review.lineNumber} 行`;
|
|
318
|
+
console.log(` ✗ ${lineDesc}:评论失败 - ${error.message}`);
|
|
284
319
|
}
|
|
285
320
|
} else {
|
|
286
|
-
|
|
321
|
+
const lineDesc = review.oldLine && review.newLine
|
|
322
|
+
? `第 ${review.oldLine}-${review.newLine} 行`
|
|
323
|
+
: `第 ${review.lineNumber} 行`;
|
|
324
|
+
console.log(` ✓ ${lineDesc}:代码质量良好`);
|
|
287
325
|
}
|
|
288
326
|
}
|
|
289
327
|
|
|
@@ -517,25 +555,54 @@ export class GitLabAIReview {
|
|
|
517
555
|
oldPath: change.old_path,
|
|
518
556
|
};
|
|
519
557
|
|
|
520
|
-
//
|
|
558
|
+
// 构建评论内容,包含完整的修改块上下文
|
|
559
|
+
let commentBody = '🤖 **AI 代码审查**\n\n';
|
|
560
|
+
|
|
561
|
+
// 如果是修改块(同时有 oldLine 和 newLine),显示完整的删除和新增
|
|
521
562
|
if (review.oldLine && review.newLine) {
|
|
522
563
|
positionParams.oldLine = review.oldLine;
|
|
523
564
|
positionParams.newLine = review.newLine;
|
|
565
|
+
|
|
566
|
+
// 添加修改块的上下文
|
|
567
|
+
const oldChange = meaningfulChanges.find(c => c.lineNumber === review.oldLine && c.type === 'deletion');
|
|
568
|
+
const newChange = meaningfulChanges.find(c => c.lineNumber === review.newLine && c.type === 'addition');
|
|
569
|
+
|
|
570
|
+
if (oldChange || newChange) {
|
|
571
|
+
commentBody += '**📝 修改内容:**\n```diff\n';
|
|
572
|
+
if (oldChange) {
|
|
573
|
+
commentBody += `- ${oldChange.content}\n`;
|
|
574
|
+
}
|
|
575
|
+
if (newChange) {
|
|
576
|
+
commentBody += `+ ${newChange.content}\n`;
|
|
577
|
+
}
|
|
578
|
+
commentBody += '```\n\n';
|
|
579
|
+
}
|
|
524
580
|
} else if (review.lineNumber) {
|
|
525
581
|
// 单独的删除或新增
|
|
526
582
|
const relatedChange = meaningfulChanges.find(c => c.lineNumber === review.lineNumber);
|
|
527
583
|
const isDeletion = relatedChange && relatedChange.type === 'deletion';
|
|
584
|
+
|
|
528
585
|
if (isDeletion) {
|
|
529
586
|
positionParams.oldLine = review.lineNumber;
|
|
530
587
|
} else {
|
|
531
588
|
positionParams.newLine = review.lineNumber;
|
|
532
589
|
}
|
|
590
|
+
|
|
591
|
+
// 添加单个变更的上下文
|
|
592
|
+
if (relatedChange) {
|
|
593
|
+
commentBody += `**📝 ${isDeletion ? '删除' : '新增'}内容:**\n\`\`\`${isDeletion ? 'diff' : 'javascript'}\n`;
|
|
594
|
+
commentBody += `${isDeletion ? '-' : '+'} ${relatedChange.content}\n`;
|
|
595
|
+
commentBody += '```\n\n';
|
|
596
|
+
}
|
|
533
597
|
}
|
|
534
598
|
|
|
599
|
+
// 添加 AI 审查意见
|
|
600
|
+
commentBody += review.comment;
|
|
601
|
+
|
|
535
602
|
const commentResult = await this.gitlabClient.createLineComment(
|
|
536
603
|
this.config.project.projectId,
|
|
537
604
|
this.config.project.mergeRequestIid,
|
|
538
|
-
|
|
605
|
+
commentBody,
|
|
539
606
|
positionParams
|
|
540
607
|
);
|
|
541
608
|
|
|
@@ -548,7 +615,7 @@ export class GitLabAIReview {
|
|
|
548
615
|
});
|
|
549
616
|
|
|
550
617
|
const lineDesc = review.oldLine && review.newLine
|
|
551
|
-
? `第 ${review.oldLine}-${review.newLine}
|
|
618
|
+
? `第 ${review.oldLine}-${review.newLine} 行(修改块)`
|
|
552
619
|
: `第 ${review.lineNumber} 行`;
|
|
553
620
|
console.log(` ✓ ${lineDesc}:已添加评论`);
|
|
554
621
|
} catch (error) {
|