简体   繁体   English

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

[英]SonarQube false-positive “unused private methods should be removed” in static method

Example code: 示例代码:

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

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

SonarQube marks bar() function as unused, but SonarLint (IntelliJ, version 2.7.1.1640) works fine. SonarQube将bar()函数标记为未使用,但是SonarLint(IntelliJ,版本2.7.1.1640)可以正常工作。 I have installed latest version of SonarQube (6.2) and latest version of Java plugin (4.5.0.8398), but still have this issue - i thought this issue was fixed? 我已经安装了最新版本的SonarQube(6.2)和最新版本的Java插件(4.5.0.8398),但是仍然存在此问题-我认为此问题已解决? Is this some kind of regression bug? 这是某种回归错误吗? Thanks for your help. 谢谢你的帮助。

UPDATE: 更新:

Above example was too trivial, i manage to specify problem: it looks like a problem with primitive arguments passed to function, for example this is marked as unused: 上面的例子太琐碎了,我设法指定问题:它看起来像是将原始参数传递给函数的问题,例如,将其标记为未使用:

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

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

if i pass hardcoded value to bar (like bar('a') ) everything works fine (or even when i pass something like bar("string".charAt(0) ) ). 如果我将硬编码的值传递给bar(例如bar('a')),则一切正常(甚至当我传递类似bar(“ string” .charAt(0))的东西时)。 SomeClass.getChar() return 'char' so it is not a problem with boxing primitives. SomeClass.getChar()返回'char',因此装箱原语不是问题。

SOLUTION: as @Michael - SonarSource Team suggested, there was a problem with dependencies bytecodes. 解决方案:正如@Michael-SonarSource团队建议的那样,依赖项字节码存在问题。 I disabled teamcity Sonar runner plugin and now run sonarqube via Gradle plugin. 我禁用了teamcity Sonar跑步程序插件,现在通过Gradle插件运行声纳。

很多时候声纳服务器和声纳皮棉同步存在问题,这与单个问题无关,它也在其他问题中被复制,例如重复代码。请参考声纳服务器并尝试解决

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM