Comment fixer le Findbugs question “valeur Null est garanti d'être déréférencés” NP_GUARANTEED_DEREF

Salut j'ai un code qui est signalée comme ayant le NP_GUARANTEED_DEREF question par Findbugs.
Maintenant, en regardant mon code je ne comprends pas très bien ce qui est mal avec elle, quelqu'un peut-il suggérer que le problème est.

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");
  }
}

Maintenant de forage dans l'Erreur en Findbugs il met en évidence les deux affectations à var = null; comme cause pour le bug, mais je ne comprends pas très bien pourquoi. Ce n'est pas comme je suis en train de faire quelque chose avec le var objet je me suis juste fait un Nul vérifier. L'exemple est tiré de la production réelle de code mais dépouillé de tout ce qui n'était pas nécessaire de reproduire l'erreur. Ce que je me demande si c'est un faux positif ou pas. Et si non, que serait un correctif approprié.

Voici le lien vers le Findbugs Bug Détail: http://findbugs.sourceforge.net/bugDescriptions.html#NP_GUARANTEED_DEREF

[Mise à JOUR] Après avoir reçu quelques commentaires sur ce problème que j'ai maintenant connecté ce qu'un Faux Positif dans le Findbugs Bugtracker sur Sourceforge le lien est https://sourceforge.net/tracker/?func=detail&aid=3277814&group_id=96405&atid=614693

Conversation sur le problème va se poursuivre.

Avez-vous, par hasard, ont var.equals(null) avant? Êtes-vous sûr que vous avez ré-exécuter Findbugs sur ce fichier (ce que je fais habituellement est que j'appelle le "nettoyer bug marqueurs").
Oui, je suis sûr que j'ai réexécuter Findbugs, et non il n'a jamais été var.equals(null) si c'était qu'elle serait facilement compréhensible. Comme jzd a dit qu'il n'a pas l'air mal. Si je reçois confirmation de plus que cela n'a pas l'air mal, je vais probablement poster un Bug pour les (Faux positif), avec Findbugs
Je vois. Je peux confirmer la même chose FB comportement sur mon ordinateur. Semble étrange en effet. Ce qui est drôle, que si vous avez remplacé throw new NullPointerException avec throw new RuntimeException le bug marqueur disparaîtrait.
Maintenant, je crois que je comprends ce qu'ils ont voulu dire. Le libellé du message n'est pas exact, mais ils mettent en garde contre un NPE. Je suppose qu'ils considèrent explicitement jeter NPE une mauvaise pratique.
ha intéressant de trouver Grzegorz, je peux confirmer votre trouver. C'est donc le NPE qui est le problème ici. Merci. Si vous mettez que dans une réelle réponse que je peux marquer que la réponse que je cherchais.

OriginalL'auteur AGrunewald | 2011-03-16