【问题标题】:SonarQube Possible Null pointer dereference in Scala pattern matching of OptionSonarQube 在 Option 的 Scala 模式匹配中可能的 Null 指针取消引用
【发布时间】:2019-02-22 22:22:05
【问题描述】:

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

logger 肯定已初始化。 我可以分享声纳配置,但我看不出这段代码如何导致空指针取消引用?我自己的结论是,Sonar 在这种情况下是错误的。

【问题讨论】:

    标签: scala sonarqube pattern-matching


    【解决方案1】:

    iterableAsScalaIterableConverter 中,我们可以看到它创建AsScala 对象引用iterableAsScalaIterable 的结果,如果Java Iterable 引用是null,则可以是null。所以你的listCommingFromJava 不应该是null。否则,listCommingFromJava.asScala 将返回 nulllistCommingFromJava.asScala.toList 将抛出 NullPointerException

    【讨论】:

    • 谢谢解释,有道理!但是,为什么不在该行上报告警告?是不是因为没有分号,声纳无法正确区分行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多