Sonarlint [squid:S1186]:Spring Tool Suite

时间:2018-05-15 13:13:37

标签: java spring-tool-suite sonarlint

我在Spring Tool Suite中使用Sonarlint V3.5.0。当我在代码中有默认构造函数时,我收到squid:S1186警告:

public class TestClass{
    public TestClass() {}
}

一直有这个警告有点烦人。正如我所发现的,SonarSource已经解决了这个版本3.5中的错误,但最新的Sonarlint仍然给了我这个警告。

如何使用Sonarlint解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

您无法单独使用SonarLint删除规则检查。您可以使用SonarQube服务器忽略违规规则,并将SonarLint连接到SQ服务器,以便忽略规则,如建议here

正如OP中所述,SonarSource团队遇到了the use-case described in the question的问题。

在考虑忽略规则之前,请考虑以下事项:

squid:S1186问题是一个很好的做法概念 - 在我们的代码中一般都有一个空范围,而不仅仅是在构造函数is a code anti-pattern中。

在您的情况下,默认构造函数已经显式实现,这显然是您正在使用的Sprint工具套件所要求的(这种用例很好地讨论here)。

考虑到空范围确实是反模式的事实,我建议在构造函数的空范围内添加注释,解释由于使用STS而需要显式公共默认构造函数。

这样做显然可以解决SonarLint提出的问题。

如果你有许多自动生成的空默认构造函数的实例 - 你应该能够使用你的IDE使用正则表达式查找/替换解决方案,以便用包含注释的范围替换空范围,解释为什么会这样。