gpt4 book ai didi

java - Sonar 错误报告删除此始终计算为 "true"的表达式

转载 作者:行者123 更新时间:2023-11-29 04:08:20 25 4
gpt4 key购买 nike

如果我有这段代码 Sonar 不会提示:

if (null != myResponse) {
// some code
}

但是如果我把一行代码放在上面

getEmptyListForNull(myResponse).forEach(this::method);

然后 Sonar 报告这个奇怪的错误。 Sonar 如何知道 getEmptyListForNull 做了什么,这无关紧要。

显然 sonar 认为代码是这样的:

myResponse.forEach(this::method);

方法 getEmptyListForNull 是一个简单的方法,它执行 null 检查并返回一个空列表(如果是)。没有其他注释或任何花哨的东西。

最佳答案

实际上 SonarQube 并不知道你的功能。这与您的功能无关。这是关于 forEach() 的。

如果您可以使用 .forEach() 遍历一个集合而没有抛出异常,则意味着该集合不为空。

import java.util.List;

public class NoFalsePositiveHere{

public static void main(String []args){

List<String> nullList = null;

nullList.forEach(s -> System.out.println(s));

if(nullList != null){
System.out.println("Since an exception is already thrown on line 9,");
System.out.println("this block is unreachable.");
System.out.println("It means that,");
System.out.println("if no exception was thrown on line 9,");
System.out.println("You could see these lines on console.");
}
}
}

如果第 9 行抛出异常,则第 11 行不执行。

如果第 9 行没有抛出异常,则表示该列表不为空。

关于java - Sonar 错误报告删除此始终计算为 "true"的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56781304/

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