PMD – Finalizerルール・セット


ファイナライザーに関するルールセットです。
※PMD 3.9に対応しています。

EmptyFinalizer

空のファイナライザーかどうかチェックします。

public class Foo
{
    protected void finalize()
    {
    }
}

FinalizeOnlyCallsSuperFinalize

super.finalize()だけを呼び出していないかチェックします。

public class Foo
{
    protected void finalize()
    {
        // super.finalize()メソッドだけを呼び出していのでNG!
        super.finalize();
    }
}

FinalizeOverloaded

finalize()メソッドをオーバーロードしていないかチェックします。

public class Foo
{
    // finalize()メソッドをオーバーロードしているのでNG!
    protected void finalize(int a)
    {
    }
}

FinalizeDoesNotCallSuperFinalize

finalize()メソッドの最後でsuper.finalize()を呼び出しているかチェックします。

public class Foo
{
    protected void finalize()
    {
        // …
        // super.finalize()が呼び出されていないのでNG!
    }
}

FinalizeShouldBeProtected

finalize()メソッドがprotectedで宣言されているかチェックします。

public class Foo
{
    // protectedで宣言されているのでNG!
    public void finalize()
    {
        // …
    }
}

AvoidCallingFinalize

finalize()メソッドを明示的に呼び出していないかチェックします。

public class Foo
{
    void foo()
    {
        Bar b = new Bar();
        // finalize()メソッドを明示的に呼び出しているのでNG!
        b.finalize();
    }
}

関連記事

  1. コメント 0

  1. トラックバック 0

return top