评分明细
适用场景
java-code-review 快速入门
Spring Boot 老项目想升级 Java 21?先让 AI 帮你扫一遍”安全 + 风格 + 最佳实践”。
这是什么?解决什么问题?
Java 项目做到第 3 年,几乎都会出现这些典型问题:Controller 层堆了几千行业务逻辑、Service 层用 Map<String, Object> 满天飞、SQL 字符串拼接(注入风险)、@Transactional 配错导致事务不生效、Stream API 滥用或根本不用、Optional 用法不规范、单元测试覆盖率低……这些问题分散在几百个文件里,人工 review 极耗时间。
java-code-review 是社区维护的 Java 专项代码审查 Skill,聚焦三个维度:安全(SQL 注入、硬编码密钥、权限检查、敏感日志)、风格(命名、注释、import 顺序、魔法值)、Spring Boot 最佳实践(Controller 薄、Service 厚、Repository 简洁、配置外置、Bean 作用域)。
加载这个 Skill 后,AI 在帮你 review Java 代码时会主动检查:@RestController 是否只做参数解析和路由、是否把业务逻辑下沉到 Service、SQL 是否用 PreparedStatement 或 JpaRepository、密码字段是否加密存储、异常是否用 @ControllerAdvice 统一处理。Skill 内部封装了 OWASP Top 10 的 Java 专项检查项,适合安全合规要求高的金融、政企项目。
适合:Spring Boot 中大型项目维护、Java 团队 Code Review 流程、企业内部合规审查。
准备工作
- Java 17+ / 21(本 Skill 默认按现代 Java 标准)
- Spring Boot 3.x:本 Skill 重点支持 3.x
- Maven 或 Gradle:任一构建工具
- Claude Code / Cursor:本 Skill 适配主流 AI 编程环境
3 步快速上手
第 1 步:安装 Skill
npx skills add JackyST0/awesome-agent-skills --skill java-code-review<br>
```<br>
仓库:https://github.com/JackyST0/awesome-agent-skills<br>
### 第 2 步:验证 Skill<br>
向 AI 询问:<br>
```<br>
用 java-code-review Skill,列出 Spring Boot Controller 的 5 个常见反模式<br>
```<br>
如果 AI 提到"业务逻辑下沉"、"返回类型统一用 ResponseEntity"、"参数校验用 @Valid"等,说明 Skill 加载成功。<br>
### 第 3 步:审查真实文件<br>
```<br>
用 java-code-review Skill 审查 src/main/java/com/example/controller/UserController.java,<br>
输出安全 / 风格 / Spring 最佳实践三类问题清单,带严重级别<br>
```<br>
AI 会逐方法分析,输出 blocker / major / minor 分类的问题清单。<br>
## 常见踩坑<br>
1. **@Transactional 失效**:方法内 this 调用同类方法,@Transactional 不会触发(走的是原生 this 引用,不经过代理)。Skill 主动识别并建议"抽到独立 Service"。<br>
2. **SQL 注入未识别**:用 `JdbcTemplate.queryForObject(sql, rowMapper, args)` 比 `queryForObject(sql + id, ...)` 安全,AI 应优先推荐前者。<br>
3. **硬编码密钥误报**:测试代码里 `application-test.yml` 写死密钥,Skill 可能误报为"生产密钥泄露"。要约定 test 资源目录豁免。<br>
4. **N+1 查询没发现**:JPA `@OneToMany` 懒加载导致循环中 N 次查询,Skill 默认会主动查 `equals/hashCode`、`@Transactional(readOnly = true)` 配置。<br>
5. **异常吞掉**:`catch (Exception e) { e.printStackTrace(); }` 啥也不做,Skill 会要求"记录日志 + 重新抛出或包装"。<br>
6. **循环依赖**:两个 `@Service` 互相注入,启动失败。Skill 会在审查阶段就提示"A 依赖 B,B 依赖 A"。<br>
## 初级用法<br>
1. **Controller 薄层**:`@GetMapping("/{id}")` 拿 `id`、调 `service.findById(id)`、返回 `ResponseEntity.ok()`,不在 Controller 里写业务。<br>
2. **Service 厚层**:所有业务规则、判断、事务都集中在 Service,Controller 只负责协议层。<br>
3. **Repository 简洁**:`JpaRepository<T, ID>` 自动获得 CRUD,自定义查询用 `@Query` + JPQL。<br>
## 高级玩法<br>
1. **Spring Security 集成审查**:检查 `@PreAuthorize` 是否覆盖敏感接口、密码是否走 `BCryptPasswordEncoder`。<br>
2. **响应式编程**(WebFlux):把同步阻塞代码改成 Mono/Flux,Skill 会主动识别"误用 block()"。<br>
3. **Spring Cloud 微服务**:审查服务间调用是否走 OpenFeign / RestTemplate、超时与重试是否配、熔断是否用 Resilience4j。<br>
## 小技巧<br>
- 用 `spring-boot-starter-validation` 加 `@Valid` 自动校验 `@NotNull` / `@Size`,免去手写 if。<br>
- 异常统一用 `@ControllerAdvice` + `@ExceptionHandler`,不要到处 `try-catch`。<br>
- 配置外置到 `application.yml`,不要在代码里写 `new SimpleDateFormat("yyyy-MM-dd")` 这种硬编码。<br>
- 用 Lombok(`@Data` / `@Builder`)减少样板代码,但要团队统一约定,避免 `@Data` 在 JPA 实体里的循环引用。<br>
- 用 `MapStruct` 做 DTO/Entity 互转,比手写 `setXxx` 维护性强。<br>
- `Optional` 不要作为字段类型,只用于返回值,避免序列化问题和反模式。<br>
- 单元测试用 `@SpringBootTest` + `MockMvc` 做集成测试,`@DataJpaTest` 做 Repository 测试,分层清晰。<br>
- 静态分析加 `SpotBugs` + `Checkstyle` + `PMD`,AI 审查和工具扫描双重保险。<br>
## 常见问题 FAQ<br>
**Q1: java-code-review 适合哪些编程语言?**<br>
A: java-code-review 通常支持主流编程语言(Python、JavaScript/TypeScript、Java、Go、C++、Rust 等)。支持程度因语言而异:Python/JavaScript/TypeScript 最佳,小众语言(如 Haskell、Elixir)可能较弱。<br>
**Q2: java-code-review 生成的代码可以直接用吗?**<br>
A: 简单的 CRUD、工具函数、单元测试可以直接用;复杂的业务逻辑、算法实现需要人工 review。永远不要盲目复制 AI 生成的代码——先理解再使用。<br>
**Q3: java-code-review 怎么收费?**<br>
A: 通常分免费版(基础功能,有限次数)、付费版(高级模型、无限次数、团队协作)。个人开发者 Pro 版约 $10-20/月,企业版 $30-50/用户/月。具体以 https://github.com/JackyST0/awesome-agent-skills 定价为准。<br>
**Q4: java-code-review 会上传我的代码到云端吗?有隐私问题吗?**<br>
A: 大部分 AI 编程工具会保存你的代码用于服务提供(模型推理)和模型改进(除非关闭)。敏感代码(企业核心、商业秘密)建议:1) 使用本地部署版本;2) 关闭"使用我的代码改进模型"选项;3) 考虑企业版(有更强隐私保护)。<br>
**Q5: 怎么让 java-code-review 生成更高质量的代码?**<br>
A: 关键技巧:1) 写清晰的 prompt,说明输入输出和约束;2) 提供代码示例(让 AI 学习你的风格);3) 拆分任务,不要一次生成太多;4) 用 TODO 注释让 AI 补充具体实现;5) review + 单元测试保证质量。<br>
## 参考链接<br>
- [Skill 仓库](https://github.com/JackyST0/awesome-agent-skills)<br>
- [Spring Boot 官方文档](https://spring.io/projects/spring-boot)<br>
- [Spring 编程风格指南](https://github.com/spring-projects/spring-framework/wiki/Code-Style)<br>
- [OWASP Java 防护](https://owasp.org/www-project-top-ten/)<br>
- [SpotBugs 静态分析](https://spotbugs.github.io/)<br>
- [MapStruct 文档](https://mapstruct.org/)<br>
## 实战经验:Spring Boot 老项目 Code Review 流程<br>
下面演示 java-code-review Skill 在一个真实 Code Review 流程里的使用方式。<br>
**场景**:一个 3 年历史的 Spring Boot 后端项目,代码量 8 万行,要做"安全合规 review"。<br>
### 步骤 1:用 Skill 跑全量扫描<br>
```<br>
用 java-code-review Skill 审查 src/main/java/com/example/ 下所有文件,<br>
按"安全 / 风格 / Spring 最佳实践"分类输出问题清单<br>
按 blocker / major / minor 严重级别排序<br>
```<br>
AI 扫描所有文件,可能发现 200+ 问题,这是预期,不要慌。<br>
### 步骤 2:分类处理<br>
把问题分桶:<br>
- **blocker**(必须立刻修):SQL 注入、硬编码密钥、敏感日志<br>
- **major**(本迭代修):N+1 查询、循环依赖、@Transactional 失效<br>
- **minor**(下一个 sprint):命名风格、注释缺失、import 顺序<br>
把清单写到 `docs/code-review/2026-Q2.md`,用 issue tracker(Linear / Jira)创建对应工单。<br>
### 步骤 3:逐文件修复 + 验证<br>
每个 blocker 修复后,跑:<br>
```bash<br>
mvn test # 单元测试<br>
mvn verify # 集成测试<br>
mvn sonar:sonar # SonarQube 静态分析<br>
```<br>
确保修改不引入新问题。Skill 在审查阶段会建议"修复后跑一次完整测试",养成习惯。<br>
### 步骤 4:建立"防退化"机制<br>
在 `pom.xml` 加:<br>
```xml<br>
<plugin><br>
<groupId>com.github.spotbugs</groupId><br>
<artifactId>spotbugs-maven-plugin</artifactId><br>
<version>4.8.6</version><br>
<configuration><br>
<effort>Max</effort><br>
<threshold>Low</threshold><br>
</configuration><br>
</plugin><br>
```<br>
让 SpotBugs 在 `mvn verify` 阶段自动跑,Skill 审查 + 工具扫描双重保险。<br>
## 配合使用的工具链<br>
- **SonarQube**:代码质量平台,持续监控 blocker 数,https://www.sonarsource.com/products/sonarqube/<br>
- **SpotBugs**:静态分析(原 FindBugs 后继),`mvn spotbugs:check`。<br>
- **Checkstyle**:代码风格检查,接 IDE 即时反馈。<br>
- **PMD**:代码规则检查,补充 SpotBugs 未覆盖的维度。<br>
- **ArchUnit**:架构约束(如"Controller 不能直接调用 Repository"),适合中大型项目。<br>
- **OWASP Dependency-Check**:检查依赖是否有已知漏洞,`mvn org.owasp:dependency-check-maven:check`。<br>
- **JFR + JMC**:生产环境性能分析,定位慢方法、内存泄漏。<br>
## 给 Java 新手的建议<br>
1. **不要把 Java 当 JavaScript 写**:不要滥用 `Object`、不要所有方法都 `static`、不要 `throws Exception` 一把梭。<br>
2. **多用 composition,少用 inheritance**:Java 的继承层次太深会难维护,优先用接口组合。<br>
3. **学会用 Stream API**:`stream().filter().map().collect()` 比 for 循环简洁,但别为了用而用,简单循环更直白。<br>
4. **读 Spring 源码**:`@RestController` 怎么工作的、`@Transactional` 怎么织入的,理解原理后写代码更有信心。<br>
5. **JVM 调优是进阶技能**:堆大小、GC 选型、JIT 编译,这些等真遇到性能问题再学不迟。<br>
6. **Java 21 是新基准**:Virtual Threads(协程)、Pattern Matching、Record Patterns,新项目应该直接用 Java 21。
java-code-review Skill 多维度简评
综合评分:8.4 / 10 ⭐⭐⭐⭐ 类别:工程方法 定位:Java 代码审查:Effective Java 原则、性能、并发、安全。
声明:本文基于公开技术文档和行业实践整理,未经过 MagicNetWorld 实测。java-code-review 目前未发现对应的独立开源 Skill 仓库,以下内容基于 Java 代码审查的最佳实践和相关工具生态编写。
一、核心定位与价值
Java 代码审查是保障 Java 项目质量的关键环节。java-code-review Skill 将 Joshua Bloch 的《Effective Java》、JVM 性能优化原则、并发编程最佳实践以及静态分析工具(SpotBugs、Checkstyle、SonarQube)的检查能力整合为 AI Agent 可执行的工作流。
与通用代码审查不同,Java 专项审查需要关注 JVM 特有的问题:内存泄漏模式、GC 友好性、线程安全、异常处理的最佳实践等。
核心价值:Java 代码审查:Effective Java 原则、性能、并发、安全。
二、核心能力清单
| 能力 | 检查范围 | 适用场景 |
|---|---|---|
| Effective Java 检查 | 对象创建、泛型、序列化等 90 条原则 | Java 项目 code review |
| JVM 性能分析 | GC 压力、对象分配、String 使用 | 性能敏感应用 |
| 并发安全检查 | volatile、synchronized、锁粒度 | 多线程/高并发应用 |
| Spring 最佳实践 | Bean 管理、事务、AOP | Spring 项目 |
| 静态分析集成 | SpotBugs / Checkstyle 规则 | CI 流水线 |
三、典型使用场景
场景 1:单类审查
提示词:
使用 java-code-review 审查 UserService.java,重点检查:空指针、资源泄露、线程安全问题
Skill 逐条分析代码,标注风险等级和修复建议。
场景 2:Spring 项目审查
提示词:
审查 Spring Boot 项目的 Service 层和 Repository 层,关注事务管理和依赖注入正确性
检查 @Transactional 使用是否正确、循环依赖是否存在、懒加载陷阱等。
场景 3:CI 集成
# .github/workflows/java-review.yml
name: Java Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run SpotBugs
run: ./gradlew spotbugsMain
- name: AI Code Review
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Review the Java code changes in this PR for Effective Java violations and concurrency issues"
四、审查维度详解
Effective Java 核心检查项(第 3 版)
- 对象创建与销毁:使用静态工厂方法、Builder 模式、避免创建不必要的对象
- 泛型:消除 unchecked 警告、优先使用泛型方法
- 异常:只针对可恢复条件使用受检异常、优先使用标准异常
- 并发:同步访问共享可变数据、使用 Executor/Task 而非裸线程
JVM 性能关注点
- String 拼接在循环中的使用(StringBuilder)
- 装箱/拆箱的性能开销
- Stream API vs 传统循环的选择
- 集合初始化大小的预分配
常见 Java 并发陷阱
HashMap在多线程环境下的竞态条件volatile仅保证可见性不保证原子性wait()必须在synchronized块中调用- CountDownLatch/CyclicBarrier 的正确使用
五、常见使用误区
| # | 误区 | 说明 | 正确做法 |
|---|---|---|---|
| 1 | ”Lombok 可以解决所有样板代码” | 有些场景(如 JPA Entity)不适合 Lombok | 了解 Lombok 的限制 |
| 2 | ”Stream 一定比循环好” | 简单操作中循环更清晰高效 | 根据场景选择 |
| 3 | ”加了 synchronized 就线程安全了” | 需要确保锁的范围和粒度正确 | 审查锁的持有时间和死锁风险 |
| 4 | ”不需要静态分析工具” | AI 审查和静态分析互补 | SpotBugs + Checkstyle + AI Review |
六、总结
核心价值:
- 基于 Effective Java 的最佳实践审查
- JVM 特有的性能和并发问题检查
- Spring 框架约定的合规性验证
- 与静态分析工具互补
适用人群:
- Java 后端开发者 / 技术 Lead / 架构师
投入产出比:⭐⭐⭐⭐ —— 推荐安装
java-code-review Skill 聚焦于 Java 生态特有的代码质量检查,是通用代码审查工具在 Java 领域的重要补充。
参考资料
- Effective Java (3rd Edition) - Joshua Bloch — 权威书籍
- SpotBugs 官方文档 — 静态分析工具
- JetBrains Java Code Review Checklist — 审查清单
- SonarQube Java Rules — 静态分析规则
- Claude Code AI Code Review for Java Teams — 实践文章
📊 评分与标签
评分说明
总分 8.4/10 · P_优选
📊 可观测社区指标(数据核验日期:2026-07-23)
- GitHub: JackyST0/awesome-agent-skills ★600,Fork 89
📦 可安装性 2.2/2.5
- 可从聚合仓库寻找内容,缺少稳定的单项发布包和明确版本锁定方式,安装前需确认原始 Skill 路径。
- 来源:安装与源码
- 对比 GitHub CodeQL、Trail of Bits Skills:本项安装边界与依赖透明度按官方资料计分,未把平台账号或宿主能力误算为 Skill 自身能力。
🎯 实用性 2.3/2.5
- 条目聚焦 Java、Spring 与常见安全审查点,可作为审查提示框架,但聚合页未提供足够的官方来源归属证据。
- 来源:功能说明
- 对比 GitHub CodeQL、Trail of Bits Skills:评分关注本项能解决的具体任务与约束,不以仓库热度代替实际功能证据。
📖 文档质量 1.7/2.0
- 条目说明覆盖风格、安全与 Spring 实践;具体规则仍应以项目 Checkstyle、SpotBugs 与框架文档为准。
- 来源:文档与示例
- 对比 GitHub CodeQL、Trail of Bits Skills:能从公开资料复核的安装、边界和示例计入本维度,无法复核的宣传性描述未计分。
👥 社区活跃 1.0/1.5
- API 返回的 ★600、Fork 89 属于整个聚合仓库,无法拆分为 Java Code Review 单项指标。
- 社区分只反映核验日可观察的仓库级信号;与 GitHub CodeQL、Trail of Bits Skills 的规模差异不直接推导输出质量。
🔗 兼容性 1.2/1.5
- 适用于 Java/Spring 项目和多种 Agent;对 Kotlin、Android 或非 Spring 栈需调整规则。
- 来源:兼容与配置说明
- 对比 GitHub CodeQL、Trail of Bits Skills:兼容性按已公开支持的协议、平台和运行条件计分,不推定未声明的客户端可用。
评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。
局限与使用边界
- 不能替代编译、单元测试、SAST 或依赖扫描;来源身份与许可证应在采用前再次确认。
- 本评分是公开资料审查,不代表在所有宿主、账号权限和生产数据集上完成独立实测。
🏷️ 标签说明
- 免费: 该标签对应条目公开描述与仓库能力边界。来源:主要核验来源
- 代码审查: 该标签对应条目公开描述与仓库能力边界。来源:主要核验来源
- 编程: 该标签对应条目公开描述与仓库能力边界。来源:主要核验来源
📋 来源核验记录
- ✅ 已核验:主要官方来源
- ✅ 已核验:GitHub 仓库或登记地址
- ✅ 已核验:GitHub API 元数据
- ⚠️ 间接来源:站内 JSON 的名称、标签与固定总分仅用于一致性校验,维度证据以以上公开来源为准。
- ❌ 已删除死链:无;若登记仓库返回 404,已在正文明确标注并未引用其社区数字。