Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/zhangloveyan/backend-skill --skill proj-review명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | proj-review |
| description | 代码审查检查清单和流程。用于代码提交前的自检、PR审查、代码质量检查。 |
前置: 任务文档校验 → Step 0: 编译检查 → Step 1: 功能检查 → Step 2: 代码规范 → Step 3: 安全检查 → Step 4: 性能检查 → Step 5: 自动修复 → Step 6: 测试检查 → Step 7: 输出报告
执行 mvn compile 检查:
如有编译错误,先修复再继续审查。
强制规则 - 违反必须修复:
#{} 参数化查询)其他安全检查:
强制规则 - 违反必须修复:
其他性能检查:
对于以下问题,直接修复而非仅报告:
| 问题类型 | 修复方式 |
|---|---|
| NPE 风险(Integer/Long 比较) | 改用 equals() 或 Objects.equals() |
| 类名与文件名不匹配 | 修改类名与文件名一致 |
缺少 @ApiLog 注解 | 添加注解 |
| 硬编码常量 | 提取为常量或使用 BaseConstant |
// ✗ 错误
int a = 1;
String str = "hello";
public void process() {}
// ✓ 正确
int userCount = 1;
String userName = "hello";
public void processOrder() {}
// ✗ 风险
User user = userMapper.selectById(id);
return user.getName(); // user 可能为 null
// ✓ 正确
User user = userMapper.selectById(id);
if (user == null) {
throw new BusinessException(ErrorCode.DATA_NOT_EXIST);
}
return user.getName();
// ✗ 危险
@Select("SELECT * FROM user WHERE name = '" + name + "'")
// ✓ 安全
@Select("SELECT * FROM user WHERE name = #{name}")
// ✗ N+1 问题
List<Order> orders = orderMapper.selectList();
for (Order order : orders) {
User user = userMapper.selectById(order.getUserId()); // N次查询
}
// ✓ 正确 - 批量查询
List<Order> orders = orderMapper.selectList();
Set<Long> userIds = orders.stream().map(Order::getUserId).collect(toSet());
Map<Long, User> userMap = userMapper.selectBatchIds(userIds)
.stream().collect(toMap(User::getId, Function.identity()));
// ✗ 深度分页问题
SELECT * FROM order LIMIT 100000, 10; // 扫描 100010 行
// ✓ 游标分页
SELECT * FROM order WHERE id > #{lastId} ORDER BY id LIMIT 10;
// ✗ 未分批
mapper.insertBatch(largeList); // 可能超时或内存溢出
// ✓ 分批处理
List<List<Entity>> batches = Lists.partition(largeList, 500);
for (List<Entity> batch : batches) {
mapper.insertBatch(batch);
}
使用模板生成审查报告:审查报告模板
同步更新任务文档: