我正在测试CodePro Anlaytix(Eclipse插件)以检查项目中的代码样式。 CPA告诉我,变量“titleParam”和“descParam”中的“变量具有空值”。
这是班级:
/**
* fdas fsda fsda fsa
* @version 1.0
*/
public class CodeProItem {
/**
* Field title.
*/
private String title;
/**
* Field desc.
*/
private String desc;
/**
* Method getTitle.
* @return String
*/
public String getTitle() {
return title;
}
/**
* Method setTitle.
* @param titleParam String
*/
public void setTitle(String titleParam) {
this.title = titleParam;
}
/**
* Method getDesc.
* @return String
*/
public String getDesc() {
return desc;
}
/**
* Method setDesc.
* @param descParam String
*/
public void setDesc(String descParam) {
this.desc = descParam;
}
}
以下是规则摘要(来自CPA doc):
保证具有空值并在a中使用的变量 表达式可能表示程序员忘记初始化 变量及其实际值。
激活了“变量具有空值”规则,这是此规则捕获的代码示例(来自CPA doc):
public boolean myMethod(String param)
{
String tmp = null;
if (tmp.equals(param)) {
return true;
} else {
return false;
}
}
我得到了这个例子,但是为什么它说我的setter中的参数是null?
答案 0 :(得分:0)
对我来说这似乎是个错误。如果它会说它可能为空并且应该被检查,那是可能的。但除非在其他地方调用已知的空值(这是可能的并且通常可能静态地找出),否则错误就没有意义了。但是,如果调用者提出了问题,那么只需错误放置错误标记。
一般来说,我使用的是FindBugs - 它被优化为不提供错误警告,但在我的经验中效果非常好。