【问题标题】:SonarQube violation: Unused private method on inner class private constructorSonarQube 违规:内部类私有构造函数上未使用的私有方法
【发布时间】:2015-12-15 06:14:39
【问题描述】:

我在我的项目中使用了以下代码。当我使用声纳评估它时,它显示Unused private method 违反ObjectTypes 内部类中定义的私有构造函数。如果我删除了ObjectTypes 构造函数,它会显示Hide Utility Class Constructor 违规。请帮助我找到解决此问题的最佳方法。

public final class Constants
{
  private Constants()
  {
  }

  public static final String KEY_SEPARATOR = " ~ ";      
  public static final String COMMON_SEPARATOR = " : ";

  public final class ObjectTypes
  {
    private ObjectTypes()
    {
    }
    public static final String ACTION_CODES = "Action Codes";
    public static final String ALL_ACTION_CODES = "All Action Codes";
    //more lines
  }
}

【问题讨论】:

  • 我可以通过将私有构造函数更改为内部类中的受保护构造函数来克服这个问题。但是,我认为在 final 类中使用受保护的构造函数并不是一个好主意。

标签: java sonarqube inner-classes


【解决方案1】:

这就是问题所在:

 private Constants()
  {
  }

还有这个:

private ObjectTypes()
    {
    }

您不必声明 EMPTY 构造函数。

【讨论】:

  • 但是,如果我删除了空的构造函数,我可以得到不同的声纳违规说Hide Utility Class Constructor对应的类
  • 所有问题都来自内部类。有没有办法在不使用私有构造函数的情况下克服内部类的Hide Utility Class Constructor违规?
  • 我的想法已经用完了。
  • @Massimo-SonarSourceTeam 我们使用 Constants 类来存储字符串文字,我们使用内部类来聚集常量类,因为它有大量文字。
猜你喜欢
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 2016-07-31
  • 2013-02-18
  • 2020-07-24
相关资源
最近更新 更多