抑制 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 这个报的是啥错误

Findbugs 与 Java 中 Date 对象的可变性有关的问题

Gradle 没有为 FindBugs 分析配置类目录

.NET 的 FindBugs [关闭]

eclipse里的findbugs单击没反应

FindBugs2.0.1的Eclipse插件用在Eclipse Juno版本上之后,出问题,如图所示。 我右击一个简单的Java项目,