java - 静态方法中的 SonarQube 误报 "unused private methods should be removed"

标签 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。

最佳答案

很多时候 sonar server 和 sonar lint 的同步有一些问题,不是这个单一的问题,它也在其他问题中复制以及重复代码。引用 sonar server 并尝试解决

关于java - 静态方法中的 SonarQube 误报 "unused private methods should be removed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42363733/

相关文章:

tfs - SonarQube Runner 和 SonarQube.MSBuild.Runner 之间的关系

java - 尽管排除了测试类,SonarCloud 显示了测试类的覆盖范围

java - Java中广泛使用的哈希算法用于实现哈希表?

azure - SonarQube SQL Azure 数据库支持在 5.5 中中断?

java - Android - 源端口 800 的 DatagramSocket 不发送

Java (Swing) - 一次拖动两个窗口

java - mvn Sonar :sonar running Error: cannot be cast to org. sonar.java.resolve.JavaSymbol$TypeJavaSymbol

android - 使用 Gradle : Class XYZ is not accessible through the ClassLoader 为多模块项目设置 SonarQube 5.4

java - 如何避免与 file.getParentFile() 进行 null 比较?

java - 嵌套 java 循环的作用域问题