声纳“重复代码”在哪里?

时间:2017-03-05 20:12:00

标签: java sonarqube

我只是在示例Sonar项目上运行声纳扫描仪。它给我的信息是“7-20行上有重复的代码”。谁能解释一下呢?

enter image description here

3 个答案:

答案 0 :(得分:3)

SonarQube告诉您这部分代码包含重复的逻辑。这并不一定意味着代码本身是复制粘贴的,但从概念上讲,完全相同的事情发生在多个地方。在这种情况下,明确重复了关于String值返回int值的逻辑。

这里有一个简单的解决方案:

String[] array = { "One", "Two", "Three", "Four", "Five", "Six" };
if (i >= 1 && i <= array.length) {
    return array[i - 1];
}

答案 1 :(得分:1)

SonarRules for Java项目:

  

一条代码被认为是重复的   无论数量多少,10个连续陈述的相同序列   代币和线条。无法覆盖此阈值。

您需要修改多个 if return 部分

答案 2 :(得分:-1)

public class Test
{
   private static final String[] WORDS;

   static {
      WORDS = new String[] {
            "One", "Two", "Three", "Four", "Five", "Six"
      };
   }

   public String intToEnglishValue(final int number) {
      return number > 0 && number <= WORDS.length ? WORDS[number - 1] : "";
   }
}