gpt4 book ai didi

java - Sonar 错误条件不应无条件评估为 "TRUE"或 "FALSE"

转载 作者:搜寻专家 更新时间:2023-11-01 02:03:00 25 4
gpt4 key购买 nike

我遇到了 Sonar 违规:

"Conditions should not unconditionally evaluate to "TRUE" or to "FALSE""

下面的代码。

List<MediaContent> savedList = source.getChildMediaContents();
List<MediaContent> supplierList = target.getChildMediaContents();

// if existing and incoming both empty
if(savedList == null && supplierList == null){
return false;
}

// if one is null and other is not then update is required
if(savedList == null && supplierList != null){
return true;
}

if(savedList != null && supplierList == null){
return true;
}

在两个 if block 下面它给出了一个错误

// if one is null and other is not then update is required
if(savedList == null && supplierList != null){
return true;
}

if(savedList != null && supplierList == null){
return true;
}

最佳答案

if(savedList == null && supplierList == null){
return false;
}

if(savedList == null && supplierList != null){

条件 supplierList != null 在达到时始终为真。由于 Java 中 && 运算符的短路行为,在 supplierList != null 到达之前,savedList == null 必须首先为真。

但是如果 savedList == null 为真,然后我们从前面的条件中知道 supplierList 不是 null,所以这是一个没有意义的条件。

另一方面,如果 savedList == null 为 false,那么由于短路行为,supplierList != null 将不会被评估。

因此,无论 savedList == null 的结果如何,supplierList != null 永远不会被评估,所以您可以简单地删除该条件。

if (savedList == null) {
return true;
}

下一步:

if(savedList != null && supplierList == null){

由于前面的简化,现在很清楚 savedList 不能为 null。所以我们也可以删除该条件:

if (supplierList == null) {
return true;
}

简而言之,这等同于您发布的代码:

if (savedList == null && supplierList == null) {
return false;
}

if (savedList == null || supplierList == null) {
return true;
}

关于java - Sonar 错误条件不应无条件评估为 "TRUE"或 "FALSE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228788/

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