gpt4 book ai didi

java - SonarQube 无法理解 Java 内联表达式进行 null 检查

转载 作者:行者123 更新时间:2023-12-02 02:26:52 28 4
gpt4 key购买 nike

我们正在使用 SonarQube 进行静态代码分析。我们正面临 SonarQube 发现的以下错误

NullPointerException might be thrown as 'evt' is nullable here

在下面的代码中

try {
//business logic

}(Exception e){
throw new MyException("Found issue for event " + evt.getDeatil());
}

因此,为了消除此错误,我们引入了用于空检查的小型内联代码

try {
//business logic

}(Exception e){
throw new MyException("Found issue for event " + evt != null ?
evt.getDeatil() : null);
}

代码更改后,SonarQube 仍然显示相同的违规错误。

有人可以帮助我们找到我们缺少的东西吗?

最佳答案

您的行中有一个错误:

throw new MyException("Found issue for event " + evt != null ? evt.getDeatil() : null);

问题是operators precedence+?: 之前评估,因此您的代码等于:

String message = "Found issue for event " + evt;
throw new MyException(message != null ? evt.getDeatil() : null);

NullPointerException 仍然可能发生。另外,您引入了一个新问题 - 表达式:

message != null

始终评估为true

要修复它,您必须添加大括号:

throw new MyException("Found issue for event " + (evt != null ? evt.getDeatil() : null));

关于java - SonarQube 无法理解 Java 内联表达式进行 null 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47672558/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com