Sonarlint squid:S1186警告:STS中空构造方法问题求助
解决SonarLint V3.5.0在STS中误报默认构造方法squid:S1186警告的问题
我完全懂这种反复弹出不必要警告的烦躁!咱们一步步来搞定它:
先确认核心前提
首先你得核实下STS里运行的SonarLint是不是真的是你以为的版本:
- 打开STS,点击
Help > About Eclipse > Installation Details - 在
Installed Software标签里搜索SonarLint,确认显示的版本号。有时候STS的插件更新可能没完全生效,实际运行的还是旧版本,这就会导致修复的问题还存在。
方法一:调整SonarLint本地规则配置
如果版本确实是3.5.0及以上,那大概率是规则的配置没正确应用修复逻辑:
- 打开STS的偏好设置:
Window > Preferences > SonarLint > Rules - 在搜索框输入
squid:S1186,找到这条“Methods should not be empty”规则 - 双击规则进入编辑界面,检查规则的参数配置:
- 看看有没有类似“忽略默认构造方法”的选项,确保它是勾选状态
- 如果没有这个选项,或者勾选后还是不行,可以直接在这个界面把规则的级别改成
Off,彻底禁用这条规则(当然如果你的项目确实需要检查空方法,这步要谨慎)
方法二:检查项目的SonarQube绑定情况
如果你的项目绑定了远程SonarQube服务器,本地SonarLint会同步服务器上的规则配置,哪怕本地插件版本更新了,服务器上的旧规则还是会生效:
- 右键项目 >
SonarLint > Unbind from SonarQube Server,断开绑定后再试试,看警告是否消失 - 如果必须绑定服务器,那需要升级远程SonarQube服务器的规则版本,然后重新同步规则到本地(右键项目 >
SonarLint > Update Binding)
方法三:临时代码规避方案
如果上面的方法都暂时无法生效,可以先在代码里加注释让SonarLint忽略这条警告:
public class TestClass{ // NOSONAR - 忽略默认构造方法的空方法警告 public TestClass() {} }
另外提醒下:如果你的类里没有其他带参数的构造方法,其实可以直接删掉这个显式的默认构造方法,Java会自动帮你生成,这样也能避免触发警告。
额外排查点
如果以上都没用,试试更新STS到最新版本,或者把SonarLint升级到当前最新版——有时候插件之间的兼容性问题也会导致修复逻辑没正确执行。
内容的提问来源于stack exchange,提问作者MenAmy
相关产品推荐
相关产品推荐

