2013-03-08 48 views
3

我正在使用FindBugs在Eclipse中分析我的代碼。Findbugs:RV_RETURN_VALUE_IGNORED_BAD_PRACTICE

下面的代碼片段給出了RV_RETURN_VALUE_IGNORED_BAD_PRACTICE

RV:方法忽略了非凡的返回值 (RV_RETURN_VALUE_IGNORED_BAD_PRACTICE)

此方法返回未選中的值。應該檢查返回值 ,因爲它可以指示不尋常或意外的 函數執行。例如,如果無法成功刪除文件(而不是 引發異常),則File.delete()方法返回 false。如果您沒有檢查結果,則在 返回非典型返回值時,如果方法調用發出意外行爲,您將不會注意到 。

public void export (File file) throws IOException { 
    if (!file.exists()) { 
     file.createNewFile(); 
    } 

    BufferedWriter bw = null; 
    try { 
     bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile())); 
    ... 

其實我不在乎文件存在與否,此方法應繼續執行。如果發生了例外將它的export()

外扔我怎麼能改寫這個片段中,因此不會顯示警告/錯誤,在不FindBugs的配置文件中禁用它?

回答

5

在這種特殊情況下,您無需致電file.createNewFile(),因爲該文件將由FileWriter反正創建。

但是,您必須確保文件的父文件夾存在。

+0

是的,只需要刪除'if' 。但是我想知道爲什麼有人會不在乎他的計劃是否在第一位。 – Axel 2013-03-08 07:59:06

4

f.createNewFile();回報boolean

真,如果指定的文件不存在,並已成功創建; 如果指定的文件已經存在

變化的方法來boolean result = f.createNewFile();

你或許應該改變的代碼,如果你不關心文件是否存在或不排除檢查exists和直接創建BufferedWriter這將創建文件,如果它不存在。另外,如果您仍然想要使用目前的代碼,請添加SuppressWarnings以忽略警告。

+0

「返回布爾值」我知道,但如果'result'處理不同,它不會消除消息。 – 2013-03-08 07:50:15

+0

如果你不在乎那麼你可以忽略它們使用'SuppressWarnings'。 http://stackoverflow.com/questions/1829904/is-there-a-way-to-ignore-a-single-findbugs-warning我也將編輯我的帖子, – 2013-03-08 07:53:28