job51-gitlab-cr-node-jt-1 2.5.2 → 2.5.4

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.
@@ -182,14 +182,43 @@
182
182
 
183
183
  13. **行号计算规范**:
184
184
  > - **行号定义**:行号是变更后文件中的**绝对行号**(从 1 开始计数)
185
- > - **如何确定行号**:
186
- > - 读取变更后文件(基于 `New Path`)
187
- > - 找到新增代码在文件中的实际行号
188
- > - 例如:如果新增代码在变更后文件的第 43 行,则 `new_line = 43`
189
- > - **示例**:
190
- > - 新增文件 `@@ -0,0 +1,49 @@`:第 1 行 `+` 的行号 = 1,第 2 行 `+` 的行号 = 2
191
- > - 已有文件 `@@ -42,3 +43,5 @@`:新增代码在文件第 43 行,则 `new_line = 43`
192
- > - **关键**:问题行号必须准确指向变更后代码在文件中的实际行号(绝对行号)
185
+ > - **⚠️ 关键规则:基于 diff 块内容逐行计数**(强制执行):
186
+ > - **禁止**读取完整文件后计算绝对行号
187
+ > - **必须**基于 diff 块内容,从 `@@ ... @@` 头之后的第一行开始逐行计数
188
+ > - **⚠️ 重要:忽略所有元数据行**(如 `=== File Information ===`、`=== Diff Content ===`、`New Path:` 等)
189
+ > - 计数规则:
190
+ > - **从 `@@ ... @@` 行之后的第一行开始计数**(不是从文件第一行,不是从元数据开始)
191
+ > - `+` 开头的新增代码:计入行号
192
+ > - 空格开头的上下文代码:计入行号
193
+ > - `-` 开头的删除代码:**不计入**行号(已删除)
194
+ > - **行号 = 从 `@@` 头之后到该行的累计行数**
195
+ > - **问题行号 = 该行在 diff 块中的位置(从 @@ 头之后开始算第 1 行)**
196
+ > - **⚠️ 行号计算示例**(必读):
197
+ > - 示例 1:新增文件 `@@ -0,0 +1,58 @@`(58 行新文件)
198
+ ```
199
+ @@ -0,0 +1,58 @@
200
+ +package com.job51.dev.bbs.service.impl; // 行号 = 1
201
+ + // 行号 = 2
202
+ +import com.job51.dev.bbs.mapper.ForumMapper; // 行号 = 3
203
+ ...
204
+ +public class TestMultiIssuesService { // 行号 = 17
205
+ + public Map<String, Object> getTestData(String forumId, String userId) { // 行号 = 27
206
+ + Object forum = forumMapper.selectById(forumId); // 行号 = 28
207
+ + String forumName = forum.toString(); // 行号 = 30 ← 问题在这,new_line = 30
208
+ + Object firstPost = posts.get(0); // 行号 = 38 ← 问题在这,new_line = 38
209
+ ```
210
+ > - 示例 2:已有文件修改 `@@ -42,3 +43,5 @@`
211
+ ```
212
+ @@ -42,3 +43,5 @@
213
+ public void method() { // 行号 = 43(上下文行,保留)
214
+ + Object obj = service.getData(); // 行号 = 44
215
+ + obj.toString(); // 行号 = 45 ← 问题在这,new_line = 45
216
+ }
217
+ ```
218
+ > - **⚠️ 验证方法**:输出前检查行号是否合理
219
+ > - 对于 `@@ -0,0 +1,N @@` 的新文件,最大行号应该是 N
220
+ > - 如果报告的行号超过 diff 块的 `new_count`,说明计算错误
221
+ > - **关键**:问题行号必须准确指向变更后代码在 diff 块中的位置(从 `@@` 头之后计数)
193
222
 
194
223
  14. `<REPORT>` 标签示例中的问题块数量仅用于展示格式,实际数量由 review 结果决定;
195
224
 
@@ -13,10 +13,17 @@ description: 代码审查技能,审查变更代码并输出 REPORT 和 LINE_IN
13
13
  - `New Count`: 当前 diff 块的行数
14
14
  - `New Path` / `Old Path`: 文件路径(去掉 `a/` 或 `b/` 前缀)
15
15
 
16
- 3. **解析行号**:返回文件中变更代码的**绝对行号**(即变更后文件中的行号)
16
+ 3. **解析行号**:**基于 diff 块内容逐行计数**
17
+ - **⚠️ 重要**:行号计算规则详见 @.claude/rules/code-review-rules.md 第 13 条
18
+ - **禁止**读取完整文件后计算绝对行号
19
+ - **必须**基于 diff 块内容,从 `@@ ... @@` 头之后开始逐行计数
20
+ - **忽略元数据行**:忽略 `=== File Information ===`、`=== Diff Content ===`、`New Path:` 等所有元数据行
21
+ - **计数起点**:从 `@@ -0,0 +1,N @@` 或 `@@ -old,count +new,count @@` 之后的第一行开始计数(该行 = 行号 1)
17
22
  - 行号定义:行号是变更后文件中的绝对行号(从 1 开始计数)
18
- - 例如:如果新增代码在变更后文件的第 43 行,则 `new_line = 43`
19
- - **如何确定行号**:读取变更后文件(基于 `New Path`),找到新增代码在文件中的实际行号
23
+ - **验证方法**:输出前检查行号是否合理
24
+ - 对于 `@@ -0,0 +1,N @@` 的新文件,最大行号应该是 N
25
+ - 如果报告的行号超过 diff 块的 `new_count`,说明计算错误
26
+ - 例如:如果新增代码在 diff 块的第 43 行,则 `new_line = 43`
20
27
 
21
28
  4. **读取上下文**:基于 New Path 读取变更后文件,涉及方法调用时追踪读取实现代码
22
29