有没有办法抑制FindBugs对静态编织生成的代码生成警告?

Sha*_*ood 5 jpa findbugs eclipselink sonarqube

我正在从FindBugs(2.0.2)和Sonar(3.7.3)得到我认为是通过静态编织EclipseLink(2.5.1)JPA实体生成的代码的误报.具体来说,我看到多次出现

ES_COMPARING_PARAMETER_STRING_WITH_EQ
Comparison of String parameter using == or != in com.test.domain.MyEntity._persistence_set(String, Object)
Run Code Online (Sandbox Code Playgroud)

URV_INHERITED_METHOD_WITH_RELATED_TYPES
Inherited method com.test.domain.MyEntity._persistence_get(String) returns more specific type of object than declared
Run Code Online (Sandbox Code Playgroud)

有没有办法消除EclipseLink生成的代码的这些警告,而不必全局禁用规则或完全排除对实体的分析?

bar*_*uin 4

非常好的问题!由于您的问题源自 FindBugs,因此您可以使用FindBugs 排除过滤器来解决此问题。特别是,看看<Method>排除情况。您可以指定一个与实体类中的 getter 和 setter 的方法名称相匹配的正则表达式,例如

<Method name="~_persistence_[gs]et" />
Run Code Online (Sandbox Code Playgroud)

这样的过滤器文件可以被所有形式的 FindBugs 使用,包括 Eclipse 插件和 SonarQube。例如,使用 SonarQube ant 任务,您可以将该属性设置sonar.findbugs.excludesFilters为 FindBugs 排除文件的绝对路径。