2015-03-03 64 views
1

我想,以檢測空指針故障使用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;  
     } 
} 

該代碼一定會用空指針異常的地址結果人員內部結構不會啓動,但帶有@NonNull註釋的FindBugs只會檢測第二種情況getString2(nullStr)。如果它不支持這種情況,你可以參考我的其他工具,可以在編譯階段檢測到這種情況嗎?

+0

至於其他工具,如果您使用的是Eclipse,您可能需要查看http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc。用戶%2Ftasks%2Ftask-using_null_annotations.htm&cp = 1_3_9_0以在您輸入incl時獲得所有需要的警告。一些快速修復等。 – 2015-03-14 18:43:47

回答

3

試試這個:

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

由於設置@NonNull到方法的返回類型是指結果將永遠null。如果您將@NonNull設置爲該方法的參數,則說:參數不能爲null

+1

驚人的速度和預防這種方法的工作原理! :d – 2015-03-03 12:39:17

相關問題