当前位置: 首页 > 知识库问答 >
问题:

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

单修德
2023-03-14

示例代码:

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),但仍然有这个问题--我以为这个问题已经解决了?这是某种回归bug吗?谢谢你的帮助。

更新:

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

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)))时也是如此)。getchar()返回“char”,所以装箱原语不成问题。

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

共有1个答案

洪楚
2023-03-14

很多时候,声纳服务器和声纳线的同步问题并不是这一个问题,它也会在其他问题上重复出现,比如重复码,请参考声纳服务器来解决

 类似资料:
  • 问题内容: 您如何看待使用 私有静态方法 ? 就个人而言,我更喜欢使用 静态 私有方法而不 是非 静态 方法,只要它不需要访问任何实例字段即可。 但是我听说这种做法违反了OOP原则。 编辑:我想从样式的角度来看,而不是性能。 问题答案: 一个方法本身本身并没有违反OOP,但是当类上有很多不需要(也不能*)访问实例字段的方法时,您就不会以OO方式进行编程,因为“对象”表示状态+一起定义的状态操作。如

  • 我想知道是否有一种方法来验证和调用一个模拟,该模拟是为一个私有静态方法创建的,该私有静态方法是从一个被测试的公共静态方法调用的。 下面是我正在测试的公共静态方法 我已经使用powermokito对私有静态方法进行了如下嘲弄:

  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 问题内容: 我正在尝试模拟私有静态方法。见下面的代码 这是我的测试代码 但是我运行的每个瓦片都会出现此异常 我想我在嘲弄东西时做错了什么。有什么想法我该如何解决? 问题答案: 为此,您可以使用和。 此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示: 希望对您有帮助。

  • 可以用调用私有静态方法吗? 此代码引发异常: 如果我将方法的访问修饰符更改为,它就会工作。

  • 问题内容: 尝试在静态类中调用非静态方法时遇到错误。 无法从类型播放中静态引用非静态方法methodName() 我不能使该方法静态,因为这也给我一个错误。 此静态方法无法从xInterface隐藏实例方法 有什么办法可以在另一个静态方法中轮回调用非静态方法?(这两种方法位于单独的包和单独的类中)。 问题答案: 从静态方法中调用非静态方法的唯一方法是使类的实例包含非静态方法。根据定义,非静态方法是