【问题标题】:Suppressing Java Findbugs error (EI_EXPOSE_REP)抑制 Java Findbugs 错误 (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。

【问题讨论】:

    标签: java date findbugs


    【解决方案1】:

    我刚刚意识到 Findbugs 分析的是编译代码(.class 文件),而不是源代码。重建并重新运行 Findbugs 后,问题就消失了。

    【讨论】:

    • 我也是同样情况的受害者 :) - 花了 15 分钟想知道为什么我的更改没有修复错误,然后意识到我没有重建。
    • @Rob Hruska:花了我大约相同的时间:-)。
    【解决方案2】:

    不,我们需要使用以下代码克隆该对象:

    public Date getSomeDate() {
      return new Date(someDate.getTime()).clone();
    }
    

    【讨论】:

    • 使用new Date clone 太多了xD
    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多