CodePro Analytix - я не получаю правило аудита «Переменная имеет нулевое значение» - PullRequest
0 голосов
/ 17 января 2012

Я тестирую 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):

Переменная, которая гарантированно имеет нулевое значение и используется в Выражение может указывать, что программист забыл инициализировать переменная с ее фактическим значением.

Активировано правило «Переменная имеет нулевое значение», и это пример кода, который будет пойман этим правилом (из документа CPA):

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

Я получил пример, но почему он говорит, что мои параметры в установщиках нулевые?

1 Ответ

0 голосов
/ 18 января 2012

Это похоже на ошибку для меня.Если это скажет, что это могло бы быть нулем и должно быть проверено, это возможно.Но если он не вызывается с известным нулевым значением где-то еще (это возможно и часто можно обнаружить статически), ошибка не имеет смысла.Однако, если вызывающая сторона сообщает о проблеме, просто маркер ошибки просто теряется.

Обычно я использую FindBugs - он оптимизирован, чтобы не выдавать ложных предупреждений, но в моем опыте работает довольно хорошо.

...