抑制 Java Findbugs 错误 (EI_EXPOSE_REP)
Posted
技术标签:
【中文标题】抑制 Java Findbugs 错误 (EI_EXPOSE_REP)【英文标题】:Suppressing Java Findbugs error (EI_EXPOSE_REP) 【发布时间】:2011-07-25 05:52:13 【问题描述】:我有一个如下所示的 Java gettor 方法:
import java.util.Date;
//...
public Date getSomeDate()
return someDate;
并且 Findbugs 报告说这会暴露一个可变对象:“可能通过返回对可变对象的引用来暴露内部表示”。 我将代码更改为:
import java.util.Date;
//...
public Date getSomeDate()
return new Date(someDate.getTime());
但 Findbug 仍然报告相同的漏洞。我还能做些什么来抑制/解决这个问题?我在 IntellJ 10 Findbugs 插件中运行 Findbugs 1.3.9。
【问题讨论】:
【参考方案1】:我刚刚意识到 Findbugs 分析的是编译代码(.class
文件),而不是源代码。重建并重新运行 Findbugs 后,问题就消失了。
【讨论】:
我也是同样情况的受害者 :) - 花了 15 分钟想知道为什么我的更改没有修复错误,然后意识到我没有重建。 @Rob Hruska:花了我大约相同的时间:-)。【参考方案2】:不,我们需要使用以下代码克隆该对象:
public Date getSomeDate()
return new Date(someDate.getTime()).clone();
【讨论】:
使用new Date
和 clone
太多了xD以上是关于抑制 Java Findbugs 错误 (EI_EXPOSE_REP)的主要内容,如果未能解决你的问题,请参考以下文章
Findbugs 与 Java 中 Date 对象的可变性有关的问题
FindBugs2.0.1的Eclipse插件用在Eclipse Juno版本上之后,出问题,如图所示。 我右击一个简单的Java项目,