Как исправить проблему с Findbugs «Гарантированно разыменование нулевого значения будет разыменовано» NP_GUARANTEED_DEREF

Привет, у меня есть код, который, как сообщает Findbugs, имеет проблему NP_GUARANTEED_DEREF. Теперь, глядя на свой код, я не совсем понимаю, что с ним не так, может кто-нибудь подсказать, в чем проблема.

public void test() {
  String var = "";
  int index = 2;
  if (index == -1) {
    var = String.class.getName();
    if (var.length() == 0) {
      var = null;
    }
  } else {
    var = Integer.class.getName();
    if (var.length() == 0) {
      var = null;
    }
  }
  if (var == null) {// FINBUGS reports on this line NP_GUARANTEED_DEREF
    /*
     * There is a statement or branch that if executed guarantees that a value
     * is null at this point, and that value that is guaranteed to be
     * dereferenced (except on forward paths involving runtime exceptions).
     */
    throw new NullPointerException("NULL");
  }
}

Теперь углубляясь в ошибку в Findbugs, он выделяет два присвоения var = null; как причину ошибки, но я не совсем понимаю почему. Это не похоже на то, что я на самом деле что-то делаю с объектом var , я просто выполняю проверку Null. Пример взят из реального производственного кода, но лишен всего, что не было необходимо для воспроизведения ошибки. Что мне интересно, ложно это или нет. А если нет, то какое исправление было бы подходящим.

Вот ссылка на подробные сведения об ошибке Findbugs: http://findbugs.sourceforge.net/bugDescriptions.html#NP_GUARANTEED_DEREF

[ОБНОВЛЕНИЕ] После получения отзывов по этой проблеме я зарегистрировал это как ложное срабатывание в Findbugs Bugtracker на Sourceforge по ссылке https://sourceforge.net/tracker/?func=detail&aid=3277814&group_id = 96405 & atid = 614693

Здесь будет продолжаться разговор о проблеме.

5
задан AGrunewald 13 April 2011 в 23:23
поделиться