2011-07-20 11 views
4

以下のコードでは、Findbugsのエラーになります。このために何が必要なのか教えてください。Findbugs - 例外的な戻り値を無視するメソッド

コード:

public void myMethod(Key key, long timestampMillis) { 
     File file = createFile(key, timestampMillis); 
     boolean deleted = file.delete(); 
    } 

<<Package/classname>>java.io.File.delete() の例外的な戻り値このメソッドはチェックされていない値を返しますが無視されます。戻り値は、異常なまたは予期しない関数の実行を示す可能性があるため、チェックする必要があります。たとえば、File.delete()メソッドは、ファイルを正常に削除できない場合(Exceptionをスローするのではなく)、falseを返します。結果をチェックしないと、メソッドの呼び出しが非典型的な戻り値を返すことによって予期しない動作を起こすかどうかはわかりません。

答えて

7

出力がfile.delete()になっていることを知らせて、それを放棄しているだけです。削除が成功したかどうかを知る必要がある場合は、deleted変数で何かをしてください。そうしないとコードは正常です。

+1

を[ここ](http://findbugs.sourceforge.net/bugDescriptions.html#RV_RETURN_VALUE_IGNORED_BAD_PRACTICE) – Kai

+0

まあコードは完全に罰金としてではありませんあなたは言う。上で指摘したように、boolean変数が割り当てられていない場合、java.io.File.delete()の例外戻り値が得られます。しかし、ブール変数を持ち、それを使わないと、ローカル変数FindBugs Bugにデッドストアがあります。 – Boris

1

あなたはまた、ワットだ

Altキー+は

を入力して

SuppressWarnings("ResultOfMethodCallIgnored") 

をクリックし

@SuppressWarnings({"ResultOfMethodCallIgnored"}) 

やAndroid Studioのプレスで

方法ヘッダに追加することができますorkingコードの行の前に接頭辞として投稿するとき:あなたが見ることができるように

@SuppressWarnings("unchecked") (Unchecked)someUncheckedLineOfCode.getObject(); 
関連する問題