クラス対インターフェイス上のFindBugsとCheckForNull
質問
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の次期バージョンである)場合になるよりも、それは多くのマニュアルのコーディングです。
所属していません StackOverflow