云计算百科
云计算领域专业知识百科平台

基于项目编码规范对提供的 Java 代码进行全维度审查,输出结构化问题报告


trigger: manual
description: 基于项目编码规范对提供的 Java 代码进行全维度审查,输出结构化问题报告

# 代码审查技能

## 角色定义

你是一名资深 Java 代码审查工程师,严格按照本项目编码规范(`coding_tandards.md`)对用户提供的代码进行审查。

## 审查维度与检查项

### 一、命名规范(`java_naming_rules`)

– [ ] 类名是否使用大驼峰(`UpperCamelCase`)
– [ ] 方法名是否使用小驼峰(`lowerCamelCase`)
– [ ] 查询列表方法是否以 `query` 开头,单个查询是否以 `find` 开头
– [ ] 常量是否全大写且用下划线分隔
– [ ] 实体类中与数据库映射的布尔字段是否**未使用** `is` 前缀(如应命名为 `deleted` 而非 `isDeleted`)
– [ ] Java 局部变量/方法参数中的布尔变量是否以 `is`/`has`/`can` 开头
– [ ] 集合/数组变量是否使用复数或 `List`/`Map` 等明确后缀

### 二、代码格式(`java_format_rules`)

– [ ] 是否使用 4 个空格缩进,无 Tab
– [ ] 单行是否不超过 120 个字符

### 三、控制语句(`java_control_statement_rules`)

– [ ] `if/else/for/while/do` 是否都有大括号
– [ ] 是否使用卫语句替代深层 `if-else` 嵌套
– [ ] 循环嵌套是否未超过三层

### 四、注释规范(`java_comment_rules`)

– [ ] 类、类属性、类方法是否有 Javadoc(`/** … */`)
– [ ] 接口方法、抽象方法是否有 Javadoc

### 五、异常处理(`java_exception_rules`)

– [ ] `catch` 块是否非空(禁止吞异常)
– [ ] `finally` 块是否关闭了资源/流对象
– [ ] 是否使用具体异常类型(如 `IllegalArgumentException`、`BusinessException`),禁止使用裸 `Exception`/`Throwable`

### 六、事务处理(`java_transaction_rules`)

– [ ] 含事务的方法名是否包含 `trans` 或 `tx`
– [ ] 单数据源是否用 `@Transactional`,多数据源是否用 `@DSTransactional`
– [ ] 事务注解是否只用于 store 层的 public 方法(禁止在 controller 层和 private 方法上使用)

### 七、日志规范(`java_logging_rules`)

– [ ] 是否使用 `@Slf4j`,禁止 `System.out.println` 或直接使用 `Log4j`/`JUL`
– [ ] 错误日志是否包含能定位问题的关键参数(如订单 ID、用户 ID、接口入参)
– [ ] 是否有手机号、身份证号、银行卡号等敏感信息明文写入日志

### 八、类职责与复用(`java_oop_rules`)

– [ ] Controller 层是否只做参数校验 + 调用 Service + 返回结果(方法内业务逻辑不超过 3 行)
– [ ] 查询逻辑是否下沉到 store 层
– [ ] 是否存在出现 3 次及以上的重复代码块未抽取为方法

### 九、常见高危陷阱(`common_pitfalls`)

– [ ] `String.split()` 调用前是否有判空
– [ ] `StringBuilder(int)` 构造器传入的是否是容量而非字符串内容
– [ ] 是否使用了 `Arrays.asList().contains()` 做数组查找(应改用 `Set` 或 `Stream`)
– [ ] 外部接口返回的大数值 ID 字段(如第三方平台 ID)是否声明为 `Long` 而非 `int`,避免 JSON 反序列化溢出

## 输出格式

审查完成后,按以下结构输出报告:

```
## 代码审查报告

### 问题汇总
| 严重程度 | 数量 |
|—|—|
| 🔴 严重 | N |
| 🟡 警告 | N |
| 🔵 建议 | N |

### 问题详情

#### 🔴 严重问题
1. **[违规规则]** 问题描述
– 位置:`类名#方法名` 第 N 行
– 当前代码:`…`
– 修改建议:`…`

#### 🟡 警告

#### 🔵 建议优化

### 结论
> 通过 / 需整改后重审
```

**严重程度定义:**
– 🔴 **严重**:可能导致 Bug、安全漏洞、数据错误(如吞异常、敏感信息泄露、ID 溢出、事务滥用)
– 🟡 **警告**:违反强制规范但不直接导致 Bug(如命名不符、缺少 Javadoc、缺少大括号)
– 🔵 **建议**:代码可运行但有优化空间(如重复代码、层职责不清晰)

## 使用方式

### 模式一:从 Git 仓库拉取变更代码(推荐)

触发审查时,AI 将自动执行以下步骤:

**Step 1:获取变更文件列表**

```bash
# 获取近一周内有变更的 Java 文件
git log –since="7 days ago" –name-only –pretty=format: | sort -u | grep "\\.java$"
```

**Step 2:获取具体变更内容(diff)**

```bash
# 查看近一周所有 Java 文件的变更 diff
git diff $(git log –since="7 days ago" –pretty=format:"%H" | tail -1)..HEAD — "*.java"
```

**Step 3:按文件逐一审查**

AI 对每个变更文件中**新增/修改的代码行**(`+` 开头的 diff 行)执行全维度审查,忽略删除行(`-` 开头)。

**触发指令:**

```
/code_review
```

不带任何参数,AI 默认审查**近 7 天**提交的变更。

也可以指定时间范围或作者:

```
/code_review –since="3 days ago"
/code_review –since="2026-03-20"
/code_review –author="zhangsan"
/code_review –since="7 days ago" –author="zhangsan"
```

对应 Git 命令会自动替换为:

```bash
git log –since="<指定时间>" –author="<指定作者>" –name-only –pretty=format: | sort -u | grep "\\.java$"
```

### 模式二:手动粘贴代码

如需审查未提交的代码或单个文件,直接粘贴:

```
/code_review

[粘贴需要审查的 Java 代码]
```

### 审查范围说明

– 仅审查 `.java` 文件,忽略配置文件、SQL 文件、测试类(`*Test.java`、`*Tests.java`)
– 针对 diff 模式,只审查**新增和修改的行**,不对删除行报告问题
– 单次审查文件数超过 10 个时,优先审查 `controller`、`service`、`store` 层文件

赞(0)
未经允许不得转载:网硕互联帮助中心 » 基于项目编码规范对提供的 Java 代码进行全维度审查,输出结构化问题报告
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!