2012-01-17 10 views
0

프로젝트의 코드 스타일을 확인하기 위해 CodePro Anlaytix (Eclipse 플러그 인)를 테스트하고 있습니다. CPA는 setter의 변수 "titleParam"및 "descParam"에 대해 "변수에 null 값이 있습니다"라고 알려줍니다. 여기 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 값을 가지고"활성화되고 이것이 (CPA의 문서에서)이 규칙에 의해 체포 될 코드의 예입니다, 나는 예를 얻을

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

하지만 왜 setter의 매개 변수가 null이라고 말합니까?

답변

0

나를 위해 버그가있는 것 같습니다. 그것이 null 일 가능성이 높고 점검되어야한다고 말하면 가능합니다. 그러나 알려진 null 값을 사용하여 다른 곳에서 호출하지 않는 한 (정적이며 가능한 경우도 있음) 오류가 발생하지 않습니다. 그러나 호출자가 문제를 제공하면 오류 마커가 잘못 배치됩니다.

일반적으로 필자는 잘못된 경고를 내 보내지 않도록 최적화 된 FindBugs를 사용하지만 경험상 꽤 잘 작동합니다.

+0

나는 규칙을 비활성화했다. 세터는 아무데도 호출되지 않았고, 내 프로젝트에는 CodePro를 테스트하는 데 단 하나의 클래스 만있었습니다. CodePro는 여전히 흥미 롭습니다. findbugs, codestyle 및 metrics 사이의 매쉬입니다. :) – mrmuggles