我该如何解决这个声纳规则?

时间:2012-02-23 16:16:49

标签: sonarqube

Dodgy - 从实例方法

写入静态字段

这是它所指的行:

record.setEarliestTradeDate(earliestTradeDate = value.earliestTradeDate);

更多代码:

Record record = getRecord(value.id);
private static Date earliestTradeDate = null;
public void setEarliestTradeDate(Date newValue) { earliestTradeDate = newValue; }

绝对不会导致任何错误,但我想清理任何红色标记行的项目。

1 个答案:

答案 0 :(得分:1)

这是一个提示,可以更改静态

static Date earliestTradeDate

在实例方法中(即非静态)

public void setEarliestTradeDate

这是(或可能有问题),因为对象的所有实例都可以更改该变量的状态 您可以通过使方法静态来解决此问题,以便静态变量将在静态上下文中更改。在我看来,这是正确的方法,因为最早的日期是代码中的某个固定点。

public static void setEarliestTradeDate

或者将此Date作为实例变量:

private Date earliestTradeDate

这也可能是singleton pattern

的情况