java - 在 findbugs 中为 <static initializer> 添加独占过滤器

标签 java groovy findbugs

我希望我的 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 中

最佳答案

我会猜测 静态初始化代码会被报告为发生在名为 <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>)...

关于java - 在 findbugs 中为 <static initializer> 添加独占过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2812754/

相关文章:

grails - Groovy脚本与Grails Application(服务器)和Tally服务器的对话

java - 如何阻止 findbugs-maven-plugin 验证 querydsl 生成的类

java - FindBugs RV_ABSOLUTE_VALUE_OF_RANDOM_INT 警告

java - Realm 生命周期 - 处理 android 中关闭/无效的实例

java - Vert.x - 限制所有集群中的单实例 verticle

java - 在特定的 JRE 中执行 JAR 文件

grails - 在grails和PostgreSQL中使用hasMany

javascript - 如何从Grails中的JSON对象获取数据库变量

gradle - 在 Gradle 的 FindBugs 插件中使用 fb-contrib 库

java - Android ListView 与 SimpleCursorAdapter - CursorIndexOutOfBoundsException 错误