【问题标题】:findbugs nonNull not finding all casesfindbugs nonNull 未找到所有案例
【发布时间】:2015-03-03 12:29:38
【问题描述】:

我想在我的应用程序中使用 FindBugs 来检测空指针故障,我关心的是代码

public class Test
{

    public static void main(String[] args)
    {
        String nullStr = null;

        Person p = new Person();
        String mightBeNull = p.getAddress().getStreet();

        getString(mightBeNull);

        getString2(nullStr);
    }

    @NonNull
    static String getString(String street) {
        return street; 
    }

    @NonNull
    static String getString2(String nullString) {
        return nullString;    
        }
}

此代码肯定会导致空指针异常,因为 person 内部的 Address 结构没有启动,但是带有 @NonNull 注释的 FindBugs 只会检测到 getString2(nullStr) 的第二种情况。如果它不支持这种情况,您可以向我推荐一些可以在编译阶段检测到这种情况的其他工具吗?

【问题讨论】:

  • 至于其他工具,如果您使用的是 Eclipse,您可能需要查看help.eclipse.org/luna/… 以在您键入时获得所有所需的警告,包括。一些快速修复等。

标签: java exception null findbugs


【解决方案1】:

试试这个:

static String getString(@NonNull String street) {
    return street; 
}

因为将@NonNull 设置为方法的返回类型意味着结果永远不会是null。如果将@NonNull 设置为方法的参数,您会说:参数不能是null

【讨论】:

  • 令人惊讶的是这种方法的工作速度和精确度! :D
猜你喜欢
  • 2011-09-17
  • 2012-06-18
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多