Анализ Eclipse NULL: потенциальный NULL в блоке if с помощью вспомогательного метода - PullRequest
0 голосов
/ 26 мая 2020

Справочная информация: анализ нулевого значения Eclipse, способный распознавать потенциальный null с помощью кода.

, например.

void foo(@Nonnull Foobar foobar){
   foobar.hashCode();
}

void bar(Foobar foobar){
  if(null != foobar &&  && Math.random()>0.5){
     foo(foobar); // generate no error as it never null
     foobar.hashCode();
  }
  foo(foobar); // generate error as it learnt from the if statement, even without @Nullable
  foobar.hashCode();
}

Но если я использую вспомогательный метод для предиката if. Затмение сошло с ума.

void bar(Foobar foobar){
  if(somethingMakeItReadable(foobar)){
     foo(foobar); // may have warning here
     foobar.hashCode();
  } 
  foo(foobar);
}

bool somethingMakeItReadable(@Nullable Foobar foobar){
  return foobar!=null && Math.random()>0.5;
}

Конечно. жизнь без вспомогательного метода может помочь. Или иметь дополнительную нулевую проверку вне вспомогательного метода. Но они ухудшают читаемость кода. Особенно это может принимать несколько параметров.

Есть ли способ сделать нулевой анализ Eclipse умным, чтобы понимать контекст?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...