job51-gitlab-cr-node-skill-prompt-optimize 1.2.6 → 1.2.9
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/mr-review-template.md +43 -39
- package/package.json +1 -1
package/mr-review-template.md
CHANGED
|
@@ -10,50 +10,54 @@
|
|
|
10
10
|
7. 若无某类问题(如无严重问题),则**完全省略该部分**(例如不输出“🔴 严重问题”标题);
|
|
11
11
|
8. 若当前审核的代码块中相同级别问题有不止一个,在对应级别的标题下按原代码顺序依次展示,如存在两个严重问题时,按其在代码中的原有顺序在严重问题标题下依次展示;
|
|
12
12
|
9. 严重问题的定义如下
|
|
13
|
-
> - 存在安全漏洞(如 SQL 注入、命令注入、敏感信息泄露)
|
|
14
|
-
> - 可能导致数据丢失/损坏/不一致
|
|
15
|
-
> - 引发空指针
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
> - 引发资源泄漏、死锁等运行时崩溃风险
|
|
23
|
-
> - 违反事务一致性或并发安全原则
|
|
24
|
-
> - 导致核心功能失效或产生错误业务结果
|
|
25
|
-
> - 引入构建失败、测试失败或高危依赖漏洞
|
|
13
|
+
> - 存在安全漏洞(如 SQL 注入、命令注入、敏感信息泄露)
|
|
14
|
+
> - 可能导致数据丢失/损坏/不一致
|
|
15
|
+
> - 引发空指针
|
|
16
|
+
**典型触发场景**:
|
|
17
|
+
`Boolean` 包装类直接用于条件判断:`if (booleanFlag)` 当 `booleanFlag` 为 `null` 时自动拆箱抛出 NPE
|
|
18
|
+
`Integer/Long` 等包装类赋值给基础类型:`int count = integerCount` 当 `integerCount` 为 `null` 时自动拆箱抛出 NPE
|
|
19
|
+
方法链式调用未判空:`user.getProfile().getName()` 当 `getProfile()` 返回 `null` 时抛出 NPE
|
|
20
|
+
集合/数组未判空直接遍历:`for (Item item : list)` 当 `list` 为 `null` 时抛出 NPE
|
|
21
|
+
`Optional` 误用:`optional.get()` 未先调用 `isPresent()` 或直接使用 `ifPresent()`
|
|
22
|
+
> - 引发资源泄漏、死锁等运行时崩溃风险
|
|
23
|
+
> - 违反事务一致性或并发安全原则
|
|
24
|
+
> - 导致核心功能失效或产生错误业务结果
|
|
25
|
+
> - 引入构建失败、测试失败或高危依赖漏洞
|
|
26
26
|
9. 警告问题的定义如下(优先级低于严重问题,不会造成立即崩溃或数据丢失,但存在隐患,**不包含任何空指针风险**)
|
|
27
|
-
> - 代码可读性差(如魔法数字、命名不规范、缺少必要注释)
|
|
28
|
-
> -
|
|
29
|
-
> - 边界条件处理不完善(如空集合、极端值未妥善处理)**但不包括直接导致 NPE 的情况**
|
|
30
|
-
> - 异常处理不完善(如捕获异常未记录或吞掉异常)
|
|
31
|
-
> - 资源使用不规范(如未关闭资源但无泄漏风险、连接池配置不当)
|
|
32
|
-
> - 代码重复或违反 DRY 原则
|
|
33
|
-
> - 类型安全警告(如原始类型使用、unchecked 转换)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
> -
|
|
37
|
-
> -
|
|
38
|
-
> -
|
|
39
|
-
|
|
40
|
-
> -
|
|
41
|
-
|
|
42
|
-
|
|
27
|
+
> - 代码可读性差(如魔法数字、命名不规范、缺少必要注释)
|
|
28
|
+
> - 性能潜在问题(如低效算法、不必要的数据库查询、内存使用不当)**但不得与严重问题行号重叠**
|
|
29
|
+
> - 边界条件处理不完善(如空集合、极端值未妥善处理)**但不包括直接导致 NPE 的情况**
|
|
30
|
+
> - 异常处理不完善(如捕获异常未记录或吞掉异常)
|
|
31
|
+
> - 资源使用不规范(如未关闭资源但无泄漏风险、连接池配置不当)
|
|
32
|
+
> - 代码重复或违反 DRY 原则
|
|
33
|
+
> - 类型安全警告(如原始类型使用、unchecked 转换)
|
|
34
|
+
> - **若某问题已在严重问题中报告,警告中不得再以其他角度(如性能、健壮性)重复描述同一变更**
|
|
35
|
+
10. **问题描述准确性规则**:
|
|
36
|
+
> - 必须准确识别代码变更引入的实际风险,不得以次要风险(如性能影响)掩盖主要风险(如空指针异常)
|
|
37
|
+
> - 示例:删除 `CollectionUtils.isEmpty(jobids)` 空检查后,若后续直接调用 `jobids.stream()`,实际风险是 **NPE** 而非"不必要的 Redis 操作"或"性能影响"
|
|
38
|
+
> - 判定原则:若代码变更可能导致运行时异常,必须优先描述异常风险,不得降级为性能或健壮性描述
|
|
39
|
+
11. **问题分级规则**:
|
|
40
|
+
> - 若问题涉及以下任一情况,**必须**归类为严重问题:
|
|
41
|
+
> - 可能导致 `NullPointerException`
|
|
42
|
+
> - 可能导致数据丢失或损坏
|
|
43
|
+
> - 可能导致安全漏洞
|
|
44
|
+
> - 若同一代码块存在多个问题,**全部归入最高风险级别**
|
|
45
|
+
> - 示例:若某一个代码块同时存在"集合未判空"和"Boolean 拆箱",两者均为严重问题,应在严重问题标题下并列展示
|
|
43
46
|
12. 最终输出必须以 `<REPORT>` 开始,以 `</REPORT>` 结束,确保内容可被程序安全提取。
|
|
44
47
|
13. 需要分析的变更内容位于下方<CHANGE_CONTENT>标签内。
|
|
45
48
|
14. 变更内容的行信息位于下方<LINE_INFO>标签内,里面的内容格式为:“@@ -84,9 +84,11 @@ public class UserCompetitiveAnalyseLogServiceImpl extends ServiceImpl<UserCompet”,使用变更后区域计算新代码块的起始行和结束行。
|
|
46
|
-
|
|
47
|
-
> - 行号必须基于 <LINE_INFO> 中的变更后行号计算(+ 号后的数字)
|
|
48
|
-
> - 格式 "@@ -84,9 +84,11 @@" 表示变更后代码从 84 行开始,共 11 行
|
|
49
|
-
> - 问题行号必须是变更后代码的实际行号,不得引用变更前行号
|
|
50
|
-
> - 若问题涉及多行,行号范围应覆盖完整问题代码块(如 84-93)
|
|
49
|
+
**行号计算规范**:
|
|
50
|
+
> - 行号必须基于 <LINE_INFO> 中的变更后行号计算(+ 号后的数字)
|
|
51
|
+
> - 格式 "@@ -84,9 +84,11 @@" 表示变更后代码从 84 行开始,共 11 行
|
|
52
|
+
> - 问题行号必须是变更后代码的实际行号,不得引用变更前行号
|
|
53
|
+
> - 若问题涉及多行,行号范围应覆盖完整问题代码块(如 84-93)
|
|
54
|
+
15. `<REPORT>`标签的每一个标题内都有两个问题块,这里只是进行示例,表示有不止一个问题时应该怎么展示,不是说每一个标题下必须有两个问题,具体问题的数量有review的结果决定,按原始代码块中对应代码的顺序依次展示即可
|
|
51
55
|
16. **输出前必须执行去重检查**:
|
|
52
|
-
> - 遍历所有已识别问题,若发现同一文件及行号范围的问题出现在多个级别,仅保留最高优先级级别
|
|
53
|
-
> - 判定为同一问题的标准:文件相同且行号范围重叠,且问题描述存在包含关系(如严重问题中的"移除空集合检查可能导致后续代码出现空指针异常"已包含警告中的"移除边界条件检查可能影响代码健壮性",后者为前者的笼统表述)
|
|
54
|
-
> - 规则:当严重问题与警告指向同一代码变更且存在描述上的包含关系时,仅保留严重问题,删除警告中的笼统表述
|
|
55
|
-
> - 示例:若 84-93 行同时被识别为"严重问题"(空指针风险)和"警告"(边界条件检查/代码健壮性),因空指针风险本身就是边界条件处理不当的具体表现,仅保留严重问题,完全删除警告中的该条目
|
|
56
|
-
> - 生成报告前必须验证:严重问题、警告、优化建议三部分中不存在行号重叠且描述存在包含关系的重复条目
|
|
56
|
+
> - 遍历所有已识别问题,若发现同一文件及行号范围的问题出现在多个级别,仅保留最高优先级级别
|
|
57
|
+
> - 判定为同一问题的标准:文件相同且行号范围重叠,且问题描述存在包含关系(如严重问题中的"移除空集合检查可能导致后续代码出现空指针异常"已包含警告中的"移除边界条件检查可能影响代码健壮性",后者为前者的笼统表述)
|
|
58
|
+
> - 规则:当严重问题与警告指向同一代码变更且存在描述上的包含关系时,仅保留严重问题,删除警告中的笼统表述
|
|
59
|
+
> - 示例:若 84-93 行同时被识别为"严重问题"(空指针风险)和"警告"(边界条件检查/代码健壮性),因空指针风险本身就是边界条件处理不当的具体表现,仅保留严重问题,完全删除警告中的该条目
|
|
60
|
+
> - 生成报告前必须验证:严重问题、警告、优化建议三部分中不存在行号重叠且描述存在包含关系的重复条目
|
|
57
61
|
|
|
58
62
|
<REPORT>
|
|
59
63
|
## 🤖 AI代码审查结果
|