Findbug不可变日期修复不起作用

时间:2014-07-25 09:07:26

标签: java immutability encapsulation getter-setter findbugs

我有maven findbug插件版本2.5.4,在我的代码中它显示错误:

.getDateRlpx() may expose internal representation by returning Price.dateRlpx 
.setDateRlpx(Date) may expose internal representation by storing an externally mutable object into Price.dateRlpx 

但是在我的代码中我使用:

public Date getDateRlpx() {
    return DateUtil.immutableDate(dateRlpx);
}

public void setDateRlpx(final Date dateRlpx) {
    this.dateRlpx = DateUtil.immutableDate(dateRlpx);
}

我的immutableDate:

public static Date immutableDate(final Date sourceDate) {
    if (sourceDate == null) {
        return null;
    }
    return new Date(sourceDate.getTime());
}

为什么findbug会显示此错误?我创建了一个新的Date对象。我甚至尝试过简单的返回new Date(dateRlpx.getTimes()),但它也没有用。我找不到任何解决方案。

1 个答案:

答案 0 :(得分:2)

是的,Thomas是对的,这是环境问题,特别是从IDEA IDE运行tomcat服务器,它以某种方式阻止了findbug检查固定源代码,而是检查了目标目录或.war中的那个我没有检查它当然。所以现在它的所有工作和findbug都同意新的Date(date.getTime())是一个解决方案:)