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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值