前言
今天试试DeepSeek都能帮我识别到哪些bug,看看DeepSeek 实力如何。 插件我用的是MarsCode
,模型选择 DeepSeek R1
,今天看看都有哪些严重bug吧,这可比人工复查方便多了。
DeepSeek Code Review 使用感受
使用的是 MarsCode fix
功能,检查了两个项目,一个是线上运行的项目,一个是正在开发调试的项目。
检测出最多的问题就是NPE
,这个东西也是java程序员遇到过最多的一个错误。很多地方实际上从业务上就避免了NPE
这个东西对于初级开发👦来说在调试过程中用处非常大🚀,还有就是我们在开发过程帮我检测XML
还是不错的,我发现,对于中高级开发程序员🧓来说,xml
是最容易出现问题的,因为集成工具不能直接检测到一些语法问题。
当然,AI给出的建议还是需要我们具备辨别的能力,下面看看我用AI 扫描出的一些问题,以及AI 给出的一些错误建议
看新机会的
技术大厂,待遇之类的给的还可以,就是偶尔有加班(放心,加班有加班费)
前后端测试捞人,多地有空位,感兴趣的可以试试~
发现的问题
1. 导出接口FileInputStream未正确关闭
当然还有很多问题,其他问题从业务上应该是不会报错,这个inputStream
关闭方式确实 存在很大问题,和业务无关,纯技术问题。
public void exportData(Long exportRecordId) throws Exception { ExportRecord exportRecord = exportRecordService.getById(exportRecordId); try { ................... 查询数据................ IPage<Record> page = service.queryPage(req); String excelName = "本年记录" + System.currentTimeMillis() + ".xlsx"; String excelNameFilePath = ExportConstant.EXPORT_TEMP_FILE_PATH_STAR_CURRENT_APPLY + excelName; File file = new File(excelNameFilePath); if (file.exists()) { FileUtil.del(file); } else { FileUtil.touch(file); } .......................封装数据............. // 5.4、读写内容到excel。 EasyExcel.write(file).head(headerList).sheet().doWrite(rowsList); // 6、将excel文件上传文件服务器。 InputStream inputStream = new FileInputStream(file); // 上传到minio,upload 方法有关闭 inputStream.close(),没有处理IOException String uploadFilePath = MinioUtil.upload(inputStream, excelNameFilePath.substring(1)); // 7、最后删除临时文件。 FileUtil.del(file); }catch (Exception e){ e.printStackTrace(); log.error("导出失败",e); } }
2.XML 中的SQL问题
最近不是在裁员么,昨天临时接手了一个半成品项目,发现SQL 在报错,于是就扫描了一下。果然没有测试的代码,用AI测试还是挺不错的。直接帮我把问题都扫描出来了
AI主要修复点说明:
- 连接条件错误:原c.district_industry_org_id = c.id改为c.district_industry_org_id = d.id,确保正确关联组织表
- 多余条件语法:
<if test="req.workUnitNature != null and ">改为<if test="req.workUnitNature != null">
,移除无效的and判断 - 错误排序字段:order by a.status改为a.assessment_result,保持与查询字段一致
- 简化CDATA语法:统一使用更简洁的||连接符,移除冗余的CDATA声明
3.错误的异常抛出
if (!allDeptsNotEmpty) { // 如果有任意一个deptId为空,抛出异常或返回错误信息 throw new JedisDataException("部门需要全部配置"); }
AI修复说明如下:
错误的解决方案
事务不完整
提醒了我加事务,但是事务方法不能 用 private
,并且我这个方法还是本类的 this
调用的
like 查询优化建议,该语法在某些库不支持
and company like ('%'<![CDATA[||]]>#{req.company}<![CDATA[||]]>'%')
AI优化建议:
and company like concat('%', #{req.company}, '%') <!-- 优化like语法 -->
concat
在某些库不支持两个参数
总结
希望大家在开发过程中,经常使用AI
插件 FIX
的功能,能减少很多粗心大意 引起的bug,能提供我们自测 和 联调的效率。
最后AI
的优化建议,也有可能发生错误,所以我们得具备辨别的能力。
——转载自作者:提前退休的java猿#畅聊专区#
登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!