1

クラスのメソッドの実装に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によって検出されなかったnullチェックが欠落しているため、アプリケーションのバグを発見しました。この問題の他のすべての場所を手動で検出したくありません。

4

1 に答える 1

1

はい、独自の検出器を作成して、独自のjarプラグインファイルにパッケージ化できます。補助的なfindbugsプラグインの例として、fb-contrib.sf.netを参照してください。

1つの問題は、FindBugsがまだアノテーションをサポートしていないbcel5.2に依存していることです。アノテーションを表す属性は引き続き渡されますが、5.3(またはbcelの次のバージョン)の場合よりも手動でコーディングする必要があります。

于 2010-04-29T03:10:41.877 に答える