几个常见findbugs问题

1、USFW_UNSYNCHRONIZED_SINGLETON_FIELD_WRITES 加锁
2、WEM_WEAK_EXCEPTION_MESSAGING 日志记录详细

     比如日志记录如下,log.info("file not found."),这个信息很抽象,我们需要增加具体哪个文件找不到的信息,log.info("file {} not found.", file)。必须通过变量替换的方式在日志中增加可变信息。

3、EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC 基类有@Data注解,子类也有@Data注解
4、NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE
      desDirPath = zipPath.getParent().toAbsolutePath().toString();
      做判空处理:

if (StringUtils.isNotBlank(zipPath)) {
    String parentPath = zipPath.getParent();
    if (StringUtils.isNotBlank(parentPath)) {
    
       String absPath = parentPath.toAbsolutePath();
       if (StringUtils.isNotBlank(absPath)) {
          desDirPath = absPath.toString();
       }
    }
}

5、IS2_INCONSISTENT_SYNC 需要同步,直接在方法声明上增加synchronized关键字。
6、WMI_WRONG_MAP_ITERATOR 使用entrySet遍历

7、LSC_LITERAL_STRING_COMPARISON
      if (childProp != null && !childProp.equals("")) { // 把""提到前面

       虽然前面判断了childProp不为null,但是我们最好把这个习惯养成好,常量信息需要在开头定义,而且这里的比较需要将常量""提前。一般而言,推荐使用一些工具方法,这里StringUtils.isNotBlank(childProp)就一句代码搞定。

8、SIC_INNER_SHOULD_BE_STATIC_ANON 不要使用匿名内部类。

9、DRE_DECLARED_RUNTIME_EXCEPTION 类内部抛出了异常,方法就不要声明抛出异常。
10、UTWR_USE_TRY_WITH_RESOURCES 处理关闭一个自动关闭的资源。

      使用了try(){}catch(){}方式操作流即try-with-resources,就无须手动关闭流。

11、UCPM_USE_CHARACTER_PARAMETERIZED_METHOD 单个字符问题

Method passes constant String of length 1 to character overridden method
This method passes a constant literal String of length 1 as a parameter to a method, when a similar method is exposed that takes a char. 
It is simpler and more expedient to handle one character, rather than a String.

    在StringBuffer、StringBuilder添加字符串操作中,如果遇到单个字符串,比如" " 或者"a",如果还是使用sb.append("")或者sb.append("a"),一般会推荐使用sb.append('')或者sb.append('a')来代替,虽然两个方法类似,但是还是有区别的,一个是字符串,一个是字符。在使用字符串indexOf()方法的时候,也类似,如果是单个字符串,也推荐使用字符的方式来查找索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值