在静态方法中,SonarQube假阳性“未使用的私有方法应该被删除”

时间:2017-02-21 09:42:16

标签: java sonarqube

示例代码:

public static String foo(){
 return bar();
}

private static String bar(){
 return "";
}

SonarQube将bar()函数标记为未使用,但SonarLint(IntelliJ,版本2.7.1.1640)工作正常。 我已经安装了最新版本的SonarQube(6.2)和最新版本的Java插件(4.5.0.8398),但仍然有这个问题 - 我认为这个问题已修复? 这是某种回归错误吗? 谢谢你的帮助。

更新:

上面的示例太简单了,我设法指定问题:它看起来像是传递给函数的原始参数的问题,例如,这被标记为未使用:

public static String foo( SomeClass a ) {
    return bar( a.getChar() );
  }

  private static String bar( char a ) {
    return String.valueOf( a );
  }

如果我将硬编码值传递给bar(如bar('a')),一切正常(或者甚至当我传递类似bar(“string”.charAt(0)))时。 SomeClass.getChar()返回'char',因此它不是装箱基元的问题。

解: 正如@Michael - SonarSource团队建议的那样,依赖项字节码存在问题。我禁用了teamcity Sonar runner插件,现在通过Gradle插件运行sonarqube。

1 个答案:

答案 0 :(得分:-2)

很多时候声纳服务器和声纳lint的同步存在一些问题,它不是这个问题,它也在其他问题中复制,如重复的code.refer声纳服务器并尝试解决