Java


JAVA.FUNCS.EF : Explicit Finalize (Java)

要旨

An object explicitly calls the finalize() method. This means finalize() is called more than once, because it is also called implicitly during garbage collection.

プロパティ

クラス名 Explicit Finalize (Java)
日本語クラス名 Explicit Finalize (Java)
クラス分類 信頼性 (reliability)
ニーモニック JAVA.FUNCS.EF
カテゴリー
CWE CWE:586 Explicit Call to Finalize()
対応言語 Java で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Explicit Finalize (Java)"

public class ExplicitFinalize {
    public void myMethod() throws Throwable {
        MyObject obj = new MyObject();

        try
        {
            obj.sayHello();
        }
        catch (Exception exception)
        {
            IO.writeLine("An error occurred.");
        }
        finally
        {
            obj.finalize(); // 'Explicit Finalize (Java)' warning issued here
        }
    }

解決法

Avoid explicit calls to finalize().

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。