日食でJSR305アノテーションを使用してFindBugsのバグを発見されていません
-
19-09-2019 - |
質問
私はFindBugsの、私は顧客にそれを作ったバグを避けているだろう、具体的@CheckForNull注釈で使用するためのJSR 305の注釈を試してきました。私は私のビルド・パスにjsr305.jarとannotations.jarを追加しましたが、バグがFindBugsのによって発見されていません。私は、EclipseのFindBugsプラグインでEclipseを使用しています。以下は、同じバグを示していますが、私はその上にFindBugsを実行したときにバグを見つけることができませんいくつかのサンプルコードです。私は、Eclipseガリレオとガニメデでこれを試してみました。
public class FindBugsAnnotationsTest {
ArrayList<String> canBeNull;
@CheckForNull
public List<String> getCanBeNull() {
return canBeNull;
}
public void shouldGetFindbugsWarning() {
canBeNull.add("a string");
getCanBeNull().add("a string");
}
}
解決
ではないのFindBugs自体、これは明白かもしれないが、私はあなたの問題は、Eclipse(特におそらくFindBugsのプラグイン)であると思います。
あなたはどのEclipseの問題を排除し、あなたはFindBugsのは、独自で正しく動作していることを確認するために、コマンドラインからのFindBugsを実行することを検討するかもしれません。あなたのIDEが正しく設定されていないとき、スタンドアロンモードでFindBugsのを実行する方法を知ることは、あなたにフォールバックを提供します。
私は、FindBugsAnnotationsTest.java
という名前のファイルにソースコードを保存してコンパイルし、List
、ArrayList
、およびCheckForNull
のための輸入を追加し、FindBugsの1.3.9を実行しました。 FindBugsのは、null値について、いくつかの警告を生成します:
M D NP: Possible null pointer dereference in FindBugsAnnotationsTest.shouldGetFindbugsWarning() due to return value of called method Dereferenced at FindBugsAnnotationsTest.java:[line 18] M C UwF: Unwritten field: FindBugsAnnotationsTest.canBeNull At FindBugsAnnotationsTest.java:[line 12] M C NP: Read of unwritten field canBeNull in FindBugsAnnotationsTest.shouldGetFindbugsWarning() At FindBugsAnnotationsTest.java:[line 16] Warnings generated: 3
これは私がFindBugsAnnotationsTest.java
の先頭に追加輸入されています
import java.util.ArrayList;
import java.util.List;
import edu.umd.cs.findbugs.annotations.CheckForNull;
コマンドます:
javac -d . -classpath ${FINDBUGS_HOME}/lib/findbugs.jar FindBugsAnnotationsTest.java
${FINDBUGS_HOME}/bin/findbugs FindBugsAnnotationsTest.class
${FINDBUGS_HOME}
はFindBugsの1.3.9がインストールされているディレクトリです。 javac
は、パス上にあると仮定される。
注:私は代わりにfindbugs.jar
とannotations.jar
のjsr305.jar
を使用しますが、私は、このコマンドを使用して同じ結果を得るます:
javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java