2012-01-17 14 views
0

プロジェクトのコードスタイルをチェックするためにCodePro Anlaytix(Eclipseプラグイン)をテストしています。 CPAは、setterの変数 "titleParam"と "descParam"に "Variable has null value"があることを伝えます。ここでCodePro Analytix - 監査ルール「変数にNULL値がありません」

クラスです:

/** 
* 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ドキュメントからの)ルールの要約です:

null値を持つことが保証されており、 式で使用される変数は、プログラマが 変数をその実際の値で初期化するのを忘れたことを示している可能性があります。

ルールは、「変数がNULL値を持っている」活性化され、これは(CPAドキュメントから)このルールによってキャッチされることになるコードの例です、私は例を得る

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

しかし、なぜsetterのパラメータがnullであるとは言いますか?

答えて

0

私にとってはバグのようです。もしそれがnullである可能性があり、チェックする必要があるとすれば、それは可能です。しかし、他のどこかで既知のヌル値で呼び出されない限り(静的に調べることは可能であり、しばしば可能です)、エラーは意味をなさない。ただし、発信者が問題を提示した場合、単にエラーマーカーが正しく配置されません。

一般に、私は誤った警告を出さないように最適化されたFindBugsを使用しますが、私の経験では非常にうまく動作します。

+0

私はルールを無効にしました。セッターはどこにも呼び出されておらず、私のプロジェクトにはCodeProをテストするクラスが1つしかありませんでした。 CodeProはまだまだ興味深いですが、これはfindbugs、codestyle、metricsの間のマッシュです – mrmuggles

関連する問題