SuperAPI AI 工具集

code-reviewer

编程与开发

查看项目

更新于 10-15 09:45

技能介绍

用途

该技能用于对 Spring Boot 4 代码进行结构化审查,支持 Java 17 及以上版本(17 为最低要求,21 LTS 和 25 在 Boot 4 新项目中常见)。审查应基于实际代码库,仅在适用的重点领域使用参考文件。

关键规则

  • 没有代码上下文绝不审查。若未提供,应要求文件、差异或相关模块。
  • 所有发现必须引用文件路径和行号。
  • 以 Spring Boot 4 为目标。读取项目的 pom.xml / build.gradle 确定实际 Java 版本(Boot 4 支持 17、21、25)。不要将 Java 17 或 21 标记为“过旧”——它们是有效的 Boot 4 基线。
  • 在推荐虚拟线程、响应式重写或架构变更前,先分析工作负载。
  • 新 Boot 4 代码优先使用 JSpecify 作为空安全基线,但在标记每个遗留注解前,先确认代码库是否仍处于过渡期。
  • 当结论依赖框架行为时,优先采用官方 Spring 和 Java 指南。

工作流程

步骤 1:确认范围

收集准确审查所需的最小上下文:

  • 范围:单文件、模块、PR 或完整代码库。
  • 目标版本:相关时从构建文件确认 Java 和 Spring Boot 版本。
  • 重点领域:迁移、架构、数据访问、安全、性能、空安全或全部。
  • 测试上下文:用户期望仅审查发现,还是也包含修复建议和测试影响。

步骤 2:仅加载与审查匹配的参考文件

按需加载:

重点 读取
Spring Boot 4 迁移模式和框架差异 references/spring-boot-4-patterns.md
Java 25 语言和并发采用 references/java-25-features.md
安全审查 references/security-checklist.md
性能审查 references/performance-patterns.md
架构边界和打包 references/architecture-patterns.md
领域模型形态 references/domain-modeling.md
值对象密集型设计 references/value-objects-patterns.md
空安全检查 references/jspecify-null-safety.md

需要时升级到其他技能:

  • 深度仓库、查询和关系工作使用 spring-data-jpa。
  • 分阶段升级规划或升级执行使用 springboot-migration。

步骤 3:运行审查轮次

仅运行与请求匹配的轮次。完整审查按此顺序:

Pass A:构建与配置

  • 验证 pom.xml 或 build.gradle 中的 Java 和 Spring Boot 版本。
  • 检查 starter 名称和迁移遗留物。
  • 扫描 Jackson 3 迁移问题、过时的测试注解和版本漂移。

Pass B:API 正确性

  • 检查控制器和服务边界。
  • 检查验证和错误处理。
  • 检查公共 API 和方法重写中的可空性。

Pass C:架构与打包

  • 识别所用架构风格。
  • 验证包结构与该风格一致。
  • 标记边界泄漏,如控制器到仓库的捷径或领域代码中的基础设施类型。

Pass D:数据访问

  • 检查仓库位置和聚合边界。
  • 检查 N+1 查询、缺失分页、投影不匹配和事务误用。

Pass E:安全

  • 检查认证和授权。
  • 检查输入验证和不安全查询模式。
  • 检查密钥处理和敏感日志。

Pass F:性能与弹性

  • 检查缓存策略、无界读取、异步使用和远程调用行为。
  • 仅当代码和工作负载证明合理时评估虚拟线程使用。
  • 检查超时、重试和连接池假设。

发现的快速触发点

将这些作为审查提示,而非代码证据的替代。

Spring Boot 4 与迁移

  • 旧 starter 名称
  • 旧 Mockito 测试注解
  • Boot 4 代码库中的 Jackson 2 假设
  • 使用 TestRestTemplate 而非 RestTestClient
  • 手动 HttpServiceProxyFactory 样板而非 @ImportHttpServices
  • 自定义 API 版本控制而非原生 spring.mvc.apiversion.*
  • @ConcurrencyLimit 或原生 @Retryable 缺少 @EnableResilientMethods

空安全

  • 项目使用 JSpecify 时缺少 package-info.java
  • 已迁移到 JSpecify 的代码中残留 org.springframework.lang 注解
  • 重写方法上缺少复制的可空性注解

架构

  • 控制器直接调用仓库
  • API 中暴露 JPA 实体
  • modulith 边界泄漏
  • 业务逻辑集中在控制器

性能

  • 循环中遍历实体
  • 缺失分页
  • 读密集路径上忽略投影机会
  • 无工作负载证据的虚拟线程建议

安全

  • 特权操作缺少授权
  • SQL 或 NoSQL 注入风险
  • 源码或日志中的密钥
  • 不安全的错误暴露

报告格式

按严重程度排序发现,使用此模板:

## Critical
- **[Category]**: Issue summary
  - **File**: `path/to/File.java:123`
  - **Impact**: What can fail, leak, or regress
  - **Fix**: Specific change to make

## High
- ...

## Medium
- ...

## Low
- ...

若无发现,明确说明,并指出剩余盲点,如未审查模块、缺失测试或不可用的运行时上下文。

常见审查模式

快速 PR 审查

  • 阅读变更文件。
  • 加载 references/spring-boot-4-patterns.md 和 references/java-25-features.md。
  • 若差异涉及安全或性能领域,添加 references/security-checklist.md 或 references/performance-patterns.md。
  • 仅报告带文件和行号引用的具体发现。

安全审查

  • 阅读 references/security-checklist.md。
  • 聚焦控制器、服务入口点、安全配置和持久化边界。
  • 报告可利用性和受影响入口点,而不仅是违反的规则。

架构审查

  • 阅读 references/architecture-patterns.md。
  • 若代码暗示富领域方法,添加 references/domain-modeling.md 或 references/value-objects-patterns.md。
  • 报告与当前架构风格相关的边界不匹配和耦合问题。

迁移审查

  • 阅读 references/spring-boot-4-patterns.md 和 references/java-25-features.md。
  • 聚焦迁移遗留物、过时 API 和部分采用问题。
  • 若用户想要分阶段升级计划而非审查,使用 springboot-migration。

何时不使用此技能

  • Kotlin 优先的代码库
  • 非 Spring Java 框架,如 Micronaut 或 Quarkus
  • 无代码上下文的泛泛审查指导
  • 纯前端改动