SonarQube Возможно разыменование нулевого указателя при сопоставлении с шаблоном Scala в Option - PullRequest
0 голосов
/ 22 февраля 2019

Отчет SonarQube показывает критическую ошибку

"Здесь разыменовывается нулевой указатель. Это приведет к исключению NullPointerException при выполнении кода."

дляниже кодового блока Scala

val someList = Option(listCommingFromJava.asScala.toList)
someList match {
  case Some(list) =>
        logger.info("List found: {}", list.map(someTransformFunction)) //Sonar Complains here of "Null pointer dereference of ?"
  case None => 
        logger.info("NoListFound")
}

логгер наверняка инициализирован.Я мог бы поделиться конфигурациями сонара, но я не вижу, как этот код может привести к разыменованию нулевого указателя?Я пришел к выводу, что в этом случае сонар не прав.

1 Ответ

0 голосов
/ 22 февраля 2019

В iterableAsScalaIterableConverter мы можем видеть, что он создает AsScala объект со ссылкой на результат iterableAsScalaIterable , который может быть null, если Java Iterable ссылкаэто null.Так что ваш listCommingFromJava не должен быть null.В противном случае listCommingFromJava.asScala вернет null, а listCommingFromJava.asScala.toList выдаст NullPointerException.

...