spotbugs常见报错

错误类型

阅读了官方的文档后,了解到spotbugs主要包括10大类bug,他们分别是:
1.Bad practice(90余种)不良的实践,违反常识性的或者必要的代码惯例,比如重写了equals却没有重写hashcode。
2.Correctness (150余种) 此处的代码有可能在运行时导致错误,与预期不符,比如空指针错误。
3.Experimental(9种)spotbugs在此处不适用,大概是匹配模式不太适用于此处。
4.Internationalization(2种)原文是:code flaws having to do with internationalization and locale,没有遇到过类似的错误。
5.Malicious code vulnerability(17种)代码具有被恶意代码攻击的风险。比如返回一个可变类型引用并保存在对象字段中。
6.Multithreaded correctness(46种)线程安全,比如可能造成死锁的代码。
7.Bogus random noise(4种)并不是软件中的实际错误。
8.Performance(37种)性能不好的代码,比如在迭代中使用“+”连接字符串。
9.Security(11种)使用了不安全的外部输入,可能导致远程控制的漏洞。
10.Dodgy(87种)导致自身混乱的代码

实验中遇到的常见错误

1.Comparison of String objects using == or !=(Bad Practice)
String对象进行比较的时候:只有两种情况可以使用== or !=的,这两种情况是;在源文件中是个常数或者是调用String.intern()方法,使用String的规范化表示形式来进行比较,如果不是这两中情况的话推荐使用equals方式。
2.Boxing/unboxing to parse a primitive init (Performance)
代码中使用的Integer.valueOf()经历了String - int - Integer - int的过程,使用Integer.paseInt()可以节约int 转Integer的过程。
3.Method names should start with a lower case letter(Performance)
方法名应该以小写字母开头,不好的编程习惯。
4.Method concatenates strings using + in a loop(Performance)
在迭代的时候使用了“+”来连接字符串。这样的话在每次迭代中,字符串转换为一个StringBuffer / StringBuilder的,连接起来,并转换回为String。这可能导致成本的二次迭代,因为不断增长的字符串是在每次迭代中重新复制。可使用StringBuffer(或StringBuilder的)会拥有更好的性能。
比如:

------------------------------------->

5.Call to equals() with null argument
在调用equals的时候参数传递了空值。
6.Unread field
代码中存在没有使用过的域,虽然不会造成编译失败,但这个字段是不必要的且容易造成误解,应当删除。
7.Dead store to local variable
代码中存在没有使用过的多余的变量。建议删除。
8.equals method overrides equals in superclass and may not be symmetric

原文链接:https://blog.csdn.net/daaaaaaaaaaaalao/article/details/106651506

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpotBugs 是一款静态代码分析工具,用于检测 Java 代码中的潜在问题和错误。它可以帮助开发人员在开发过程中更早地发现和解决问题,从而提高代码质量和可维护性。 以下是 SpotBugs 常见问题和代码修改建议: 1. NullPointer 异常:可能发生在代码中使用 null 引用时。解决方法是添加 null 检查和异常处理代码,或者使用 Optional 类型避免 null 引用。 2. 多线程问题:可能发生在代码中使用共享变量、锁或线程不安全的方法时。解决方法是使用同步机制、线程安全的数据结构和方法,或者使用并发编程框架如 CompletableFuture。 3. 资源泄漏:可能发生在代码中没有正确关闭文件、网络连接或数据库连接等资源时。解决方法是使用 try-with-resources 语句或手动关闭资源。 4. SQL 注入漏洞:可能发生在代码中使用字符串拼接构建 SQL 语句时。解决方法是使用预编译语句或 ORM 框架,或者使用参数化查询。 5. 数组越界异常:可能发生在代码中使用数组时超出索引范围。解决方法是添加数组长度检查和异常处理代码。 6. 类型转换异常:可能发生在代码中使用错误的类型转换或未检查类型转换时。解决方法是使用 instanceof 操作符进行类型检查和异常处理。 7. 循环引用问题:可能发生在代码中使用循环引用的对象时。解决方法是使用弱引用或手动打破循环引用。 8. 注解使用错误:可能发生在代码中使用错误的注解或注解参数时。解决方法是查阅文档并正确使用注解。 9. 可能出现的空指针:可能发生在代码中使用可能为空的变量时。解决方法是添加 null 检查和异常处理代码,或者使用 Optional 类型避免 null 引用。 以上是 SpotBugs 常见问题和代码修改建议,但并不是所有问题和解决方法都适用于所有情况。开发人员应该根据具体情况和实际需要选择合适的解决方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值