2012-01-17 42 views
0

我正在测试CodePro Anlaytix(Eclipse插件)以检查项目中的代码样式。 CPA告诉我,变量“titleParam”和“descParam”中的变量具有空值。CodePro Analytix - 我没有得到审计规则“Variable has Null Value”

下面是类:

/** 
* 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):

被保证有一个空值,并在 表达式中使用的变量可能表示程序员忘记用其实际值初始化变量 。

规则“变量具有空值”被激活,这是代码的例子,将通过这条规则被捕获(注册会计师DOC):

public boolean myMethod(String param) 
{ 
    String tmp = null; 
    if (tmp.equals(param)) { 
     return true; 
    } else { 
     return false; 
} 
} 

我得到的例子,但为什么它是否说我在setters中的参数是null?

回答

0

这对我来说似乎是一个错误。如果它会说它可能是空的,应该检查,这是可能的。但是,除非在别的地方用一个已知的空值调用它(这是可能的并且通常可以静态地找出),否则这个错误是没有意义的。但是,如果调用者提供了该问题,则简单地将错误标记放错位置。

一般来说,我使用FindBugs--这是优化不会给虚假的警告,但工作相当不错,在我的经验。

+0

那么我禁用了这个规则。设置者没有被调用,我的项目中只有1个类(用于测试CodePro)。 CodePro仍然非常有趣,它是findbugs,codestyle和指标之间的混搭:) – mrmuggles 2012-01-17 21:39:26