【发布时间】:2013-08-23 05:53:13
【问题描述】:
考虑以下案例
public void setRules(MyRule[] rules) {
this.rules=rules;
}
Sonar 抱怨说,
接收数组的构造函数和方法应该克隆对象和 存储副本。这可以防止用户未来的更改影响 内部功能。
这是真的,当有人在设置后更改array 的值时,我明白了这一点,该更改可能会影响内部函数。如果我们克隆该数组更改将不会生效。
现在考虑另一种情况
public void setExecutions(List<MyRule> ruleList) {
this.ruleList= ruleList;
}
现在Sonar 没有告诉任何问题。为什么这里不需要克隆?
【问题讨论】:
-
声纳是 IDE 吗?也许它是充当克隆的参数对象。
-
@SrinathGanesh 不,它是一个用于持续检查代码质量的开源平台。 en.wikipedia.org/wiki/SonarQube, sonarqube.org/effective-code-review-with-sonar
-
这个Q需要更多关注