java - 如何解决 Sonar 问题 "Correctness - This method continues a loop after finding an equality condition "

标签 java java-8 sonarqube

我有以下代码。我想要从代码中得到的只是

  1. 如果方法参数中提供的语言环境存在于 labelList 中,则返回它 或
  2. 检查 labelList 中是否存在 EN_US,然后返回
 String LOCALE = "locale"; 
 List<Map<String, Object>> labelList = // coming for other class
...
 public Object resolveData(String locale) {
 Map<String, Object> enUSLabel = null;
         locale = locale!= null && !locale.isEmpty() ? locale: EN_US;
              for (Map<String, Object> picklistLabel : labelList) {
                if (picklistLabel.get(LOCALE).equals(locale)) {
                  return picklistLabel;
                } else if (EN_US.equals(picklistLabel.get(LOCALE))) {
                  enUSLabel = picklistLabel;
                }
              }
              return enUSLabel;
 }

我遇到 Sonar 问题(在 enUSLabel = picklistLabel;)

正确性 - 该方法在找到相等条件后继续循环 在基于相等性的 if 条件中查找并设置变量后,此方法继续循环,并且不会中断循环。由于继续循环似乎不太可能再次找到该项目,因此在此时中断似乎是正确的操作。

如何纠正?是否可以在一个 for 循环中实现?

最佳答案

enUSLabel = picklistLabel 替换为 return picklistLabel

关于java - 如何解决 Sonar 问题 "Correctness - This method continues a loop after finding an equality condition ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61115869/

相关文章:

gradle - 无法在多模块项目中使用 Sonar 运行器的集成覆盖

c# - SonarQube C# SuppressMessage,S1871 类别

azure - 尽管安装了代理,但无法从 Azure DevOps(云 - PaaS)访问内部 SonarQube(本地)

java - 我在同一行中有两个 Id,其中 Id 用逗号分隔,并且只想要一个 Id 如何获取任何潜在客户

java - 将一个java项目(我在里面用JLayer 1.0.1来播放mp3)转为可运行的jar文件

java - 将远程调试附加到 tanuki 服务包装应用程序

具有 3 个参数的 Java8 stream.reduce() - 获得透明度

java - 对字段的 Lambda 引用

Java:如何在 JVM 加载类时拦截它们

groovy - 使用 Spock 验证非 spy 方法调用