3

findbugs レポートに次のエラーが表示されないようにしたい:

DM_NUMBER_CTOR: メソッドが非効率的な Number コンストラクターを呼び出します。代わりに静的な valueOf を使用してください

問題は、これが groovy で生成されたコード ファイルで発生するため、ソース コードを制御できないことです。そのため、ソース コードを除外して除外フィルターに追加する必要があります。

明示的にクラスを追加したくありません (多くのツールが使用する API を作成しているため、フィルターを汎用にしたい)。このバグをタイプごとにレポートから完全に削除したくはありません。このバグが「静的初期化子」メソッドで発生した場合にのみ、このバグが表示されないようにしたいと考えています。何か案が?以下のフィルターを試してみましたが、うまくいきませんでした。

<Match>
    <Method name="~.*static initializer.*" />
    <Bug pattern="DM_NUMBER_CTOR" />
</Match>

その場合の FindBugs の「スタックトレース」は次のとおりです。

クラス内 net.milanaleksic.cuc.tools.sound.SoundPlayerTool メソッド内 net.milanaleksic.cuc.tools.sound.SoundPlayerTool.() 呼び出されたメソッド new Long(long) 代わりに Long.valueOf(long) を呼び出す必要があります SoundPlayerTool.groovy内

4

1 に答える 1

5

静的イニシャライザ コードは、 と呼ばれるメソッドで行われていると報告されると思います<clinit><Method name='&lt;clinit&gt;'/>フィルターを設定してみては?(これはほとんど<clinit>XML エスケープされています)。完全にテストされておらず、ランダムな考えです。

私の手がかりは、http://findbugs\.googlecode\.com&sa=N&cd=2&ct=rc&l=125">いくつかの FindBugs 内部テストのこの部分でした:

 String methodName = m.getMethodName();
 ...
 if (...  methodName.equals("<clinit>")) ) ...

<clinit>確かではありませんが、バグが実際に発生した場合、同じメソッド名 ( ) が記載されていると思います...

于 2010-05-11T21:41:31.133 に答える