我在Spring Tool Suite中使用Sonarlint V3.5.0。当我在代码中有默认构造函数时,我收到squid:S1186
警告:
public class TestClass{
public TestClass() {}
}
一直有这个警告有点烦人。正如我所发现的,SonarSource已经解决了这个版本3.5中的错误,但最新的Sonarlint仍然给了我这个警告。
如何使用Sonarlint解决这个问题?谢谢。
答案 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使用正则表达式查找/替换解决方案,以便用包含注释的范围替换空范围,解释为什么会这样。