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

确定常数的声纳方法

包唯
2023-03-14

我使用Sonarqube5.1,并对“Sonar Way”Java质量配置文件进行了实验。工作很简单:我想为缺少的媒体类型定义一个全局字符串常量:

public interface Utf8MediaType {
    String APPLICATION_JSON = "application/json;charset=UTF-8";
}

然而,Sonarqube告诉我,在规则squid中这是一个不好的做法:S1214-不应该在接口中定义常数。长长的文本谈到了实现这个接口,我并没有打算,但我让步了,而是创建了一个类:

public class Utf8MediaType {
    public static final String APPLICATION_JSON = "application/json;charset=UTF-8";
}

然而,这被认为是规则Squid中的一个主要设计问题:S1118-实用程序类不应该有公共构造函数。所以它催促我添加一个私有构造函数。当然,为了不违反规则squid:S1213中的约定,这个构造函数必须首先出现--接口声明或类的成员应该以预定义的顺序出现。我想在那之后,我甚至可能会得到common-java:insultientbranchcovery,因为测试中没有覆盖私有构造函数。

这些都是默认的规则,我觉得它们结合起来有点傻。我有更多的默认值对我们不起作用的例子(缺乏对TestNG的支持)。对此我能做些什么?你有什么推荐?

  • 屈服。使它成为一个类,添加一个私有构造函数,在单元测试中使用内省。使代码大十倍。对于字符串常量。
  • 创建异常列表。但是对每个项目都这样做可能会导致很长的列表,并邀请人们添加异常,即使是对重要的东西也是如此。
  • 停用规则。现在我不想篡改默认配置文件,因为这可能意味着在Sonarqube升级上需要做大量的工作。
  • 创建从默认值继承并覆盖内容的配置文件。事实证明,当您从概要文件继承时,您不能停用规则。您只能添加其他规则和更改规则的配置(以降低其严重性)。

共有1个答案

浦德明
2023-03-14

屈服吧。使它成为一个类,添加一个私有构造函数,在单元测试中使用内省。使代码大十倍。对于字符串常量。

总的来说,这是正确的做法。您真的不想创建一个“常数”接口。需要私有构造函数来确保用户不会无意中扩展或实例化不应该实例化的对象。

如何向私有构造函数添加测试覆盖率?

创建异常列表。但是对每个项目都这样做可能会导致很长的列表,并邀请人们添加异常,即使是对重要的东西也是如此。

如果您将严重性设置为“info”,它将从技术债务计算中删除它。我必须使用squid:s1213来实现这一点,当我使用Eclipse指定的默认顺序进行排序时,会引发该命令。

 类似资料:
  • 我遇到了一个问题: 移除这个未使用的方法参数“messageId”。 我的方法看起来像: 用于过滤器的。这不是字段。它是方法参数。 那是一个< code >声纳错误还是我忽略了什么?我们用的是声纳5.6

  • 我尝试使用Jenkins上的java项目运行声纳分析,使用标准的maven sonar:sonar goal,并使用post STEP>>Execute SonarQube Scanner。我使用的maven目标是。 对于SonarQube扫描仪,我使用了下面的maven目标 SonarQube版本-7.7声纳扫描仪版本-3.3.0 Jenkins版本-2.164.3 Maven版本-3.6.1

  • 问题内容: 在现代Python中声明自定义异常类的正确方法是什么?我的主要目标是遵循其他异常类具有的任何标准,以便(例如)我捕获到异常的任何工具都可以打印出我包含在异常中的任何多余字符串。 “现代Python”是指可以在Python 2.5中运行但对于Python 2.6和Python 3. 是“正确”的方式。所谓“自定义”,是指一个Exception对象,该对象可以包含有关错误原因的其他数据:字

  • 部署自定义规则(如https://github.com/sonarsource/sonar-java/blob/master/java-checks/src/main/java/org/sonar/java/checks/useLessimportcheck.java)后,启动Sonarqube4.2时,在sonar启动期间引发以下异常: 上面提到的类应该在sslr-core-1.19.2.jar

  • 我第一次在这里发帖。我一直使用S.O.并最终决定创建一个帐户,以便我可以参与其中。现在,回答问题:)目前,我正在使用RAD 7.5.4(Eclipse 4.3),我正在尝试将Sonar的插件安装到我的IDE中,但在尝试从IDE安装它时,我不断出错: 无法完成请求。请参阅详细信息。未满足的依赖项:[org.sonar.ide.eclipse.jdt.feature.feature.group3.4.