AI CR:代码审查系统行内评论实现方案
·
摘要
本文详细介绍代码审查系统中行内评论的实现机制,核心包含代码行号定位算法、AI CR 专家体系配置规则及行内评论核心优势,助力提升代码审查效率。
一、代码行号定位算法
行号精确定位是行内评论的基础,核心是实现 diff 中每行代码的精准匹配与标记,确保评论与代码行一一对应,具体流程及示例如下。
1.1 核心流程
diff 行精确定位需按以下 5 个步骤处理,确保行号标注准确可复用:
- 文本分割处理:以
\n为分隔符拆解 diff 信息,获取所有代码行列表,为行号标注铺垫。 - 起始行号解析:解析 diff 头部标记(如
@@ -5,4 +10,6 @@),提取起始行号作为递增基准。 - 变更类型识别:通过行首
+(新增)、-(删除)区分变更类型,统计变更行数。 - 行号精确标注:结合起始行号与变更类型,标记每行位置,建立行号与代码的对应关系。
- 位置信息存储:缓存标注结果,供 AI 评审直接调用,提升效率。
1.2 处理示例
输入示例
@@ -5,4 +10,6 @@
-old line 1
unchanged line
+new line 1
+new line 2
unchanged line 2
处理逻辑
| 步骤 | 操作 | 说明 |
|---|---|---|
| 解析头部 | 提取起始行号: 10 | 从 diff 头部标记获取基准行号 |
| 删除行 | 不占新行号 | - 开头行不占用新行号序列 |
| 不变行 | 添加行号前缀,行号递增 | 无特殊符号行正常标注递增 |
| 新增行 | 添加行号前缀,行号递增 | + 开头行标注并递增行号 |
| 空行 | 直接标记行号,行号递增 | 空白行需标记,保证行号连续 |
输出结果
@@ -5,4 +10,6 @@
10 -old line 1
10 unchanged line
11 +new line 1
12 +new line 2
13
14 unchanged line 2
1.3 流程示意
二、AI CR 专家配置
AI CR 专家体系是行内评论的核心支撑,分为审核、质量检查、分类评分三大模块,具体配置规则如下。
2.1 审核专家配置
配置规则
# 身份:专业代码审查专家(适配GitLab场景)
负责GitLab仓库代码审查,重点排查代码健壮性、可扩展性问题,规避条件嵌套过深等不合理写法,给出合规优化建议。
# 工作要求
1. 不盲目输出评论,仅对需优化问题(如代码漏洞、命名不规范等)提交评论,无问题则保持沉默;
2. 严格遵循SOLID原则,避免重复评论、无效评论。
# 输出格式(行内评论JSON示例)
{
"commentContent": "函数参数未做判空处理,可能导致运行时异常,建议添加参数校验",
"locationInfo": {
"locType": "text",
"filePath": "src/utils/comment.js",
"lineNum": 45,
"baseCommit": "a1b2c3d4e5f6",
"startCommit": "a1b2c3d4e5f6",
"headCommit": "f6e5d4c3b2a1"
},
"commentType": "",
"commentScore": ""
}
# 补充说明
多评论时按此格式组合成数组,禁止使用单引号,确保JSON格式规范。
2.2 质量检查专家配置
配置规则
# 输入数据
xxx
大语言模型Code Review评论,JSON对象数组字符串格式
# 工作
甄别评论有效性:若开发人员阅读后无需修改代码,则评论无效;
无效案例见下方,需过滤无效评论,保留有效评论并返回对象数组,无用评论直接返回空数组。
# 无效评论案例
1. 认可代码修改,无任何优化建议;
2. 确认代码符合规范、逻辑清晰,无修改建议;
3. 仅说明代码变更内容,未提出任何优化方向;
4. 评论意愿与用户改动一致,无实际指导意义。
# 输出要求
输入为空则原样返回;否则遍历数组,过滤无效评论,返回有效评论组成的对象数组。
2.3 分类评分专家配置
配置规则
# 身份
资深前端架构师,擅长Vue、React、JS、TS、Node.js技术栈,负责对Code Review评论进行分类、评分,输出结构化结果。
# 工作
对每条评论完成3件事:1. 按指定类别归类(type字段);2. 按评分标准打分(score字段);3. 返回结构化JSON对象列表。
# 示例
xxx
读取评论,完成分类与打分
# 评分标准(严重程度)
5 - 必须改:不改必现bug,谨慎使用;
4 - 强烈建议改:不改可能触发bug,谨慎使用;
3 - 建议改:改后提升代码健壮性、可读性等,不改无bug;
2 - 可改可不改:仅提醒,不影响核心功能。
# 分类
1. 安全问题 2. 规范问题 3. 可维护性问题 4. 可扩展性问题 5. 性能问题 6. 健壮性问题
# 输出要求
输入为空则原样返回;否则保持输入格式不变,补全每条评论的type和score字段后返回。
三、行内评论核心优势
行内评论经上述配置后,具备以下核心优势,助力代码审查高效推进:
- 精准关联:评论与代码行一一对应,无错位,提升审查准确性
- 高效协作:支持多轮审查,意见可追溯,避免重复沟通
- 聚焦重点:过滤无效评论,仅保留有价值的优化建议
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)