日食でJSR305アノテーションを使用してFindBugsのバグを発見されていません

StackOverflow https://stackoverflow.com/questions/1321873

質問

私は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という名前のファイルにソースコードを保存してコンパイルし、ListArrayList、および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.jarannotations.jarjsr305.jarを使用しますが、私は、このコマンドを使用して同じ結果を得るます:

javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top