SONARQUBE-sonarQube扫描问题整理
一、compareTo比较结果不建议用==判断,而是采用比较运算符例:
根因:为保证代码健壮性,比较运算符结果不结果不建议使用==去判断
处理: compareTo == -1 修改为 compareTo < 0
二、IO处理未在finally中释放流Use try-with-resources or close this "FileWriter" in a "finally" clause
根因:IO流操作后未正确释放资源,造成资源浪费,严重可能会造成内存溢出
处理:采用try-with-resources方式,写到try括号内,执行完try中的代码块后自动释放同时删除close()和finally代码块
flush() socket.shutdownOutput()都要保留,只删除close()方法
三、"static" base class members should not be accessed via derived types
根因:为了代码清晰起见,永远不要使用子类的名称访问父类的静态成员。这样做会造成混淆,并且可能会导致存在两个不同的静态成员的错觉。
处理:JSONObject.parseObject(JSON.toJSONString(e)); 修改为:JSON.parseObject(JSON.toJSONString(e));
四、"Collection.isEmpty()" should be used to test for emptiness
根因:从时间复杂度的角度看 isEmpty()的时间复杂度是 O(1), size()可能会遍历集合去获取到集合长度,时间复杂度是O(n),相比较而言 isEmpty更优秀一些
并且isEmpty()方法返回结果是boolean类型,可以直接进行if判断,可以让代码更简洁
处理:List.size() == 0 修改为 list.isEmpty()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)