質問

CheckForNullアノテーションはクラスのメソッドの実装ではなく、インタフェースのメソッドの宣言に存在する場合にFindBugsが私をチェックし、警告するようにする方法はありますか?

import javax.annotation.CheckForNull;

interface Foo {
    public String getBar();
}

class FooImpl implements Foo {

    @CheckForNull 
    @Override
    public String getBar() {
        return null;
    }   
}

public class FindBugsDemo {
    public static void main(String[] args) {
        Foo foo = new FooImpl();
        System.out.println(foo.getBar().length());
    }
}

私はちょうどCheckForNullがFooImplではなく、Fooの上でのみ存在していた、と私は、この問題のすべての他の場所を見つけるにしたくないので、FindBugsのによって発見されなかった欠落している、ヌルチェックのために自分のアプリケーションのバグを発見しました手動ます。

役に立ちましたか?

解決

はい、あなたはあなた自身の検出器を書き、そしてあなた自身のjarプラグインファイルでそれらをパッケージ化することができます。 auxillaryのFindBugsのプラグインの例としてfb-contrib.sf.netを参照してください。

1つの問題は、FindBugsのは、まだ注釈をサポートしていませんBCEL 5.2に依存しているということです。あなたはまだ注釈を表すあなたに渡された属性を取得しますが、5.3(または何BCELの次期バージョンである)場合になるよりも、それは多くのマニュアルのコーディングです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top