为什么声纳显示下面的代码有重大问题,并说一句,如果用一个括号括起来,则使此语句失效
如果我这样做,将会出现功能性问题。我该如何解决此问题
if (Optional.ofNullable(baseOffersRequest.getCreditClass()).isPresent()) {
if (!baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("High")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Low")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Medium")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Unknown")) {
errors.add(new Error("EPO_CATALOG_ERR_04", "Invalid Credit Class in the Request."));
}
}
Sonar建议在这里做这样的事情:
if (Optional.ofNullable(baseOffersRequest.getCreditClass()).isPresent()) && (!baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("High")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Low")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Medium")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Unknown")) {
errors.add(new Error("EPO_CATALOG_ERR_04", "Invalid Credit Class in the Request."));
}
这里没有功能性问题,因为没有多余的if语句也可以实现同样的功能。
如果在isPresent()循环中为if编写else案例,则不会抛出这样的错误。由于isPresent()循环中只有一种情况,建议您在一个if循环中添加单个条件检查。]
我认为建议您根据编写的代码以这种方式编写:
if (Optional.ofNullable(baseOffersRequest.getCreditClass()).isPresent()
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("High")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Low")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Medium")
&& !baseOffersRequest.getCreditClass().trim().equalsIgnoreCase("Unknown")) {
errors.add(new Error("EPO_CATALOG_ERR_04", "Invalid Credit Class in the Request."));
}
引入一个变量,并在一个if语句中检查它: