在findbugs </static>中为<static initializer =“”>添加独占过滤器

时间:2010-05-11 16:57:10

标签: java groovy findbugs

我希望我的findbugs报告不显示以下错误:

DM_NUMBER_CTOR:Method调用低效的Number构造函数;使用静态值替代

问题是这发生在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。() 叫做方法新龙(长) 应该调用Long.valueOf(long) 在SoundPlayerTool.groovy中

1 个答案:

答案 0 :(得分:4)

我会猜测静态初始化程序代码将在名为<clinit>的方法中报告。您可以尝试设置<Method name='&lt;clinit&gt;'/>过滤器吗? (几乎是<clinit>但是XML转义)。完全没有经过考验,只是一些随意的想法。

我的线索是这个部分http:// findbugs \ .googlecode \ .com&amp; sa = N&amp; cd = 2&amp; ct = rc&amp; l = 125“&gt;一些FindBugs内部测试:

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

我不确定,但我认为如果错误实际发生,则会提到相同的方法名称(<clinit>)...