繁体   English   中英

SonarLint 为 java:S1206 问题发出警报,但已实现 hashCode 和 equals

[英]SonarLint alerting for a java:S1206 issue but hashCode and equals are implemented

我在 Eclipse 上有一个小型 Java 项目,我喜欢使用 SonarLint 检查代码异味,但是今天我遇到了一个奇怪的java:S1206问题,它说"equals(Object obj)" and "hashCode()" should be overridden in pairs . 这个问题是在一个长期模型对象上报告的,该对象正确覆盖了equalshashCode方法。

Java 类覆盖“hashCode”和“equals”。

我已经尝试重新运行 SonarLint 几次,但结果是一样的。 我所做的最后修改是更新一些依赖项版本和导入。

我使用 Eclipse 2019-12 (4.14.0) Build id: 20191212-1212 和 SonarLint for Eclipse version 5.0.0.15138。 Eclipse 使用 JDK 1.8.0_231 运行。

项目代码可以在我的ISS-Tracker GitHub 存储库中找到

问题似乎与我用来执行 Eclipse 的 Java 虚拟机 (JVM) 版本有关。 我修改了eclipse.ini文件以使用 JVM 11 执行 Eclipse,SonarLint 没有报告任何问题。 可以肯定的是,我已经删除了配置,重新启动了 Eclipse,重新执行了 SonarLint 报告,并且再次出现了 java:S1206 问题。

对于那些面临相同问题(或类似问题)的人:

  1. 下载 Java 虚拟机 11;

  2. 在您的机器上安装JVM并注释(复制)安装目录(例如/opt/openjdk/jdk-11.0.2 );

  3. 在文本编辑器上打开$ECLIPSE_HOME/eclipse.ini文件;

  4. 添加以下行,用带注释的安装目录替换<JAVA_HOME>

-vm
<JAVA_HOME>/bin

eclipse.ini文件应如下所示:

添加 JVM 配置行后的 eclipse.ini 文件

  1. 重新启动 Eclipse。

  2. 通过右键单击项目文件夹,菜单SonarLint ,项目Analyze再次运行 SonarLint 报告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM