findbugs nonNull找不到所有案件

时间:2015-03-03 12:29:39

标签: java exception null findbugs

我想在我的应用程序中使用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)的第二种情况。如果它不支持这种情况,你可以参考我在编译阶段可以检测到这种情况的其他工具吗?

1 个答案:

答案 0 :(得分:3)

试试这个:

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

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