我用 Claude Code 给 Spring Boot 老项目做了一次代码 Review:查出 4 类隐藏问题

VIP我用 Claude Code 给 Spring Boot 老项目做了一次代码 Review:查出 4 类隐藏问题
接手 Spring Boot 老项目时,真正麻烦的往往不是编译报错,而是分散在业务代码中的空指针、N+1 查询、异常吞没和并发隐患。本文记录一次使用 Claude Code 辅助代码 Review 的完整流程,并给出提示词、Java 示例、修改方案和人工复核方法。
开通可读全文 ·392 人阅读
最低0.47元/天 解锁文章

在这里插入图片描述

接手 Spring Boot 老项目时,真正麻烦的往往不是编译报错,而是分散在业务代码中的空指针、N+1 查询、异常吞没和并发隐患。本文记录一次使用 Claude Code 辅助代码 Review 的完整流程,并给出提示词、Java 示例、修改方案和人工复核方法。


项目能运行,不代表代码没有问题

前段时间接手一个维护多年的 Spring Boot 项目,编译正常,接口也能访问,但团队里几乎没人敢轻易修改核心模块。

原因并不复杂。这个项目经历过多轮需求迭代,同一个业务规则散落在 Controller、Service、定时任务和消息消费者中。修改一个判断条件,可能影响另一个几个月没人碰过的流程。

更麻烦的是,项目里的大部分问题不会在编译阶段暴露。空指针只有遇到特殊数据才会出现,N+1 查询要等数据量增加后才会变慢,并发问题甚至可能只在线上高峰期偶发。

我决定先用 Claude Code 做一轮辅助代码 Review,但没有让它直接修改项目,而是要求它完成三件事:

  • 理清项目结构和核心调用关系;
  • 找出有明确代码证据的风险;
  • 按严重程度生成待人工确认的问题清单。

这次排查最终找出了四类值得处理的问题。


在这里插入图片描述

不要直接输入“帮我检查整个项目”

刚开始使用 AI 做代码审查时,很多人会输入一句:

帮我检查一下这个项目有哪些问题。

这样的任务范围太大,输出结果通常会变成一组正确但没有执行价值的建议:

建议完善异常处理
建议增加单元测试
建议优化数据库查询
建议提高代码可读性

这些建议放在任何 Java 项目中都成立,却不能直接告诉开发者应该修改哪个文件、什么情况下会出错。

我后来把任务拆成了两轮。

第一轮:只理解项目,不修改代码

请读取当前 Spring Boot 项目的目录结构、pom.xml 和主要配置文件。

需要输出:
1. 项目使用的主要技术栈;
2. Controller、Service、Mapper、定时任务和消息消费者的分布;
3. 核心业务模块及依赖关系;
4. 可能涉及数据库写入、事务和外部接口调用的模块。

暂时不要修改任何文件,也不要输出通用优化建议。

这一步的目的不是发现 Bug,而是检查 AI 有没有理解项目。

如果它连核心模块、技术栈和调用关系都判断错了,后面的代码审查结果也很难可信。

第二轮:按风险类型逐项扫描

请对当前项目进行第一轮代码风险审查,暂时不要修改代码。

重点检查:
1. 可能出现空指针异常的位置;
2. 循环内执行数据库查询的代码;
3. 捕获异常后没有记录、没有转换、没有继续抛出的代码;
4. 单例对象中共享非线程安全变量的代码;
5. 文件流、数据库连接或线程池未正确关闭的问题。

每个问题必须包含:
- 严重级别
- 文件路径
- 类名和方法名
- 相关代码
- 触发条件
- 可能影响
- 修改建议

无法确认的问题请标记为“需要人工验证”,不要直接下结论。

任务被限制后,AI 输出的内容会更像一份可以执行的代码审查报告,而不是泛泛而谈的项目建议。


问题一:测试数据正常,历史数据却可能触发空指针

项目中有一个订单详情查询方法:

public OrderVO getOrderDetail(Long orderId) {
   
   
    Order order = orderMapper.selectById(orderId);

    OrderVO vo = new OrderVO();
    vo.setId(order.getId());
    vo.setUserName(order.getUser().getName());

    return vo;
}

这段代码在测试环境里一直没有报错,因为测试订单都有对应的用户数据。

但生产环境中存在部分历史订单。用户信息已经被清理,订单记录仍然保留。这时 order.getUser() 可能返回 null。

此外,代码还存在另外两个风险:

  • 调用方可能传入空的 orderId;
  • 数据库中可能不存在对应订单。

可以先把参数和查询结果处理清楚:

public OrderVO getOrderDetail(Long orderId) {
   
   
    if (orderId == null) {
   
   
        throw new IllegalArgumentException("orderId must not be null");
    }

    Order order = orderMapper.selectById(orderId);
    if (order == null) {
   
   
        throw new OrderNotFoundException(
                "Order does not exist, orderId=" + orderId
        );
    }

    OrderVO vo = new OrderVO();
    vo.setId(order.getId());

    User user = order.getUser();
    vo.setUserName(user == null ? "未知用户" : user.getName());

    return vo;
}

这段修改只能作为结构示例,不能不看业务规则直接复制。

当关联用户不存在时,有些系统允许订单继续展示,只把用户名标记为“未知用户”;有些系统则需要把订单识别为异常数据,并通知运营人员修复。

AI 可以发现空指针风险,却无法只凭一个方法确定最终业务语义。这类问题必须由熟悉订单规则的人确认。


问题二:列表接口里隐藏着 N+1 查询

订单列表接口中还有一段常见写法:

List<Order> orders = orderMapper.selectByCondition(condition);
List<OrderVO> result = new ArrayList<>();

for (Order order : orders) {
   
   
    User user = userMapper.selectById(order.getUserId());

    OrderVO vo = new OrderVO();
    vo.setOrderId(order.getId());
    vo.setUserName(user == null ? "" 
VIP 2025四大AI编程工具实战横评:Copilot、Cursor、Windsurf与Claude Code深度对比 AI编程工具已从代码补全进化为工程级协作伙伴,其核心价值在于缓解需求模糊、文档缺失、技术栈混杂与时间压力下的开发熵增。理解其底层原理——如Copilot的上下文敏感补全、Cursor的Agent多步任务分解、Windsurf的中文语义映射引擎、Claude Code的长程记忆与技能链编排——是构建高效人机协同工作流的前提。这类工具的技术价值不在于替代开发者,而在于将注意力锚定于业务逻辑本身,显著压缩从需求到可部署代码的路径长度。典型应用场景包括微服务快速原型搭建、遗留系统现代化重构、信创环境低资源开发及金融 开通可读全文·544 阅读·7 点赞·8 收藏 阅读全文

相关推荐

Claude Code + GLM-5.2 构建本地化 Vibe Coding 开发工作流

Vibe Coding 是一种以意图驱动、可验证、可追溯的新型 AI 编程范式,其核心在于将自然语言开发需求转化为结构化工程动作。它依赖两大技术支柱:具备项目级代码图谱理解能力的智能调度器(如 Claude Code),以及擅长中文语境下多跳逻辑推理与强类型代码生成的基础模型(如 GLM-5.2)。相比通用 Copilot 或 Llama 方案,该组合在上下文感知补全、配置感知生成、中文技术文档理解及逻辑链完整性上具有显著工程优势。典型应用场景包括遗留系统重构、微服务快速搭建、技术文档同步生成示例代码等。本

cuankuangzhong6373的博客 1724

Cursor、Claude Code与Codex:2026年AI编程工具的三层分工真相

AI编程工具已从单一代码生成演进为覆盖开发全链路的协同系统。其核心不再取决于模型‘多聪明’,而在于是否契合真实工程场景中的工作流嵌入、变更可控性与架构决策支持。Cursor代表编辑器层的UI/UX深度集成能力,强调MCP协议兼容与低延迟交互;Claude Code体现终端侧的Git原生治理逻辑,聚焦worktree隔离、CLI可编排性与审计追溯;Codex则定位企业级架构代理,依赖影响面分析精度与RBAC权限映射机制。三者共同构成‘怎么写—写什么—为什么这么写’的技术闭环,适用于金融风控、电商履约、支付网关

weixin_30367169的博客 441

Opus 4.7 + Claude Code 工作流重构:从命令执行到可验证Agent范式

大型语言模型在软件开发中的应用已从简单代码补全,演进为具备自主决策与闭环验证能力的智能代理。其核心原理在于长上下文理解、多步推理链构建与执行结果可审计性,技术价值体现在降低人工干预频次、提升变更可靠性及加速复杂系统重构。典型应用场景包括微服务拆分、安全合规检查、跨文件协同重构等工程实践。本文聚焦 Opus 4.7 的强推理特性与 Claude Code 的 agent 执行能力,深入解析如何通过闭环验证、分层权限控制和领域感知 MCP Server,将大模型真正转化为可长期驻留、可追溯、可回滚的数字同事。

weixin_34268169的博客 341

Trae与Claude Code IDE级对比:轻量本地化vs智能云端协同

AI编程助手正从插件增强走向IDE原生融合,其核心演进围绕‘本地推理’与‘云端协同’两大技术范式展开。Trae以Rust运行时+AST语义解析实现毫秒级响应和离线可用性,代表轻量可控的CLI思维IDE化路径;Claude Code依托动态Context Agent与大模型深度集成,提供高语义理解的交互式智能协作者体验。二者在上下文管理精度、网络依赖刚性、领域适配深度等维度形成显著分野,尤其影响嵌入式开发、前端工程及MLOps等强约束场景的落地可靠性。2026年产品成熟度跃升后,选型已非简单参数比对,而是匹配

weixin_34112181的博客 483

Claude Code 本地化接入 DeepSeek:协议桥接实现零修改AI开发工作流

Claude Code 是一款基于 Anthropic 协议的开源 CLI 工具,核心能力在于将大模型代码理解、生成与重构能力封装为可嵌入工程流程的原子操作。其技术原理依赖标准 HTTP 接口(如 `/v1/messages`)和 Bearer Token 认证机制,具备天然的协议可移植性。这种设计赋予了它跨模型服务商迁移的技术价值——只要目标平台兼容 Anthropic v1 协议,即可通过环境变量重定向实现无缝对接。DeepSeek v4 正是凭借对这一协议的完整支持,成为国内开发者替代境外 API 的

weixin_34187862的博客 372

推荐11个顶级的Claude Code Skills

ClaudeCode的Skills系统为程序员提供了11个强大的AI辅助工具,包括代码审查、重构建议、单元测试生成、API文档自动生成、性能分析、安全扫描、数据库迁移脚本生成、CI/CD配置、依赖管理、ER图生成和日志分析等功能。这些"技能包"可大幅提升开发效率,从代码质量到协作沟通全方位优化工作流程。用户可根据需求选择2-3个核心功能开始尝试,熟练后还可自定义Skills。该系统需要配合Anthropic的API使用,建议先在小型项目测试再应用于核心业务。

分享AI、区块链技术及应用,未来已来 1827

Claude Code 100个真实案例 - 用AI给老项目补齐单元测试(覆盖率从20%到90%)

本案例展示如何使用 Claude Code 系统性地为一个几乎没有测试的 Node.js 老项目补齐单元测试。从分析测试盲区、设计测试策略、自动生成测试代码到优化覆盖率,完整演示将测试覆盖率从 20% 提升到 90% 的全过程。

yueyeguzhuo的专栏 33

【软件使用】Calibre部分提参的实战技巧与常见问题解析

本文详细解析了Calibre部分提参(Partial PEX)的实战技巧,重点介绍了如何利用HCELL与XCELL文件高效排除已知模块,实现精准的寄生参数提取,从而快速定位后仿真中的时序与信号完整性问题。文章涵盖了从图形界面到命令行的完整操作流程,并提供了常见问题(如时钟失真、模块“消失”)的深度Debug指南与最佳实践,助力芯片设计工程师提升验证效率。

yhn456789的博客 1019

Synopsys工具链实战:如何用VCS、DC、ICC和Calibre跑通你的第一个数字IC设计项目?

本文详细介绍了如何使用Synopsys工具链(VCS、Design Compiler、ICC和Calibre)完成数字IC设计项目,从RTL代码到GDSII版图的全流程。涵盖环境配置、RTL设计验证、逻辑综合、物理实现及签核验证等关键步骤,帮助工程师掌握高效的数字IC设计流程。

weixin_42525005的博客 194

无人机多旋翼倾转动力测试系统-适用于(eVTOL开发、缩比模型测试、科研教育)

LY-QZ-F4多旋翼倾转动力测试系统是全球首款专为倾转四旋翼设计的多自由度动力测试平台,融合高精度传感、动态倾转模拟与智能工况分析,为下一代eVTOL技术提供全维度验证工具。采用航空级应变传感器(精度±0.1% FS),同步捕获推力、扭矩、俯仰/滚转力矩,动态误差<1%。同时测试电驱动系统(单轴最大150kW)与混合动力单元(增程式),支持高压(800V)平台。通过MET数据采集软件,控制采集一体化,定制化,实时观察上百个传感器数据,实时更改测试需求。可搭配六维姿态平台,温湿度舱、振动台等环境模拟设备。

weixin_49209795的博客 867

Electron - Electron failed to install correctly, please delete node_modules/electron and try install

Electron安装失败:Electron failed to install correctly, please delete node_modules/electron and try installing again,electron安装报错:Electron failed to install correctly...解决方案,Electron 未能正确安装,请删除 node_modules/electron,然后再次尝试安装,如何解决这个问题,手把手教你解决,在yarn dev时报错,electr

🏆 前端领域优质创作者 4359

rk3568 点亮双LVDS 屏

承接文章《rk3568点亮LCD(lvds)》中仅仅只能使用亮单LVDS;经过厂商的努力,陆续发布新补丁。目前支持双lvds显示,缺憾是需要自己额外移植相关补丁。受限于通信频率和VOP编码能力,支持最大分辨仍然是1920x1080、60fps。

weixin_35723192的博客 2995

『Apisix进阶(九)』基于Upstream实现服务转发的最佳实践

本篇文章将以服务转发为核心,带你从原理到实战,深入了解 Upstream 的配置方法与常用场景。

老陈聊架构 1501

YOLOv8集成CPCA(Combined Parallel Convolutional Attention)注意力机制模块YOLOv8深度教程

YOLOv8集成CPCA注意力模块教程摘要 本教程详细介绍了如何将YOLOv8 CPCA(Combined Parallel Convolutional Attention)注意力模块集成到YOLOv8目标检测框架中。CPCA模块结合了通道注意力和多尺度空间注意力机制,通过全局池化和双路径融合增强通道特征,并利用多尺度深度可分离卷积捕获空间上下文信息。YOLOv8 教程包含完整的实现步骤:创建CPCA模块代码、修改YOLOv8模型解析逻辑、编写自定义配置文件,YOLOv8YOLOv8YOLOv8YOLOv8

FJN110的博客 1616

光学传播仿真软件:SPEOS_(14).建筑物内光环境仿真

在建筑物内光环境仿真中,材料属性的定义直接影响光的传播和反射效果。SPEOS提供了丰富的材料库,但也可以自定义材料属性以满足特定需求。创建新材料选择Materials->。输入材料名称和类型。配置材料属性选择材料对象,打开属性编辑器。设置反射率、透射率、表面粗糙度和颜色。# 导入SPEOS模块# 创建新材料# 配置材料属性custom_material.set_reflectivity(0.8) # 设置反射率为0.8。

kkchenjj的博客 1237

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: RAG 项目为什么 Demo 很顺,上线后全是幻觉?
下一篇: 开发者 AI 会员怎么选?ChatGPT Plus、Claude Pro、Cursor、Gemini、Grok、Kiro 对比指南

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
AI编程实战技巧
博客等级 码龄12年 23粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值