示例代码:
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。
最佳答案
很多时候 sonar server 和 sonar lint 的同步有一些问题,不是这个单一的问题,它也在其他问题中复制以及重复代码。引用 sonar server 并尝试解决
关于java - 静态方法中的 SonarQube 误报 "unused private methods should be removed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42363733/