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
。
在正确覆盖 equals
和 hashCode
方法的长期模型对象上报告了此问题。
我已经尝试重新运行 SonarLint 几次,但结果是一样的。我所做的最后修改是更新一些依赖项版本和导入。
我正在使用 Eclipse 2019-12 (4.14.0) Build id:20191212-1212 和 SonarLint for Eclipse 版本 5.0.0.15138。 Eclipse 运行正在使用 JDK 1.8.0_231.
项目代码可以在我的 ISS-Tracker GitHub repository.
上找到
问题似乎与我用来执行 Eclipse 的 Java 虚拟机 (JVM) 版本有关。我修改了 eclipse.ini
文件以使用 JVM 11 执行 Eclipse,SonarLint 未报告任何问题。为了确定这一点,我删除了配置,重新启动了 Eclipse,重新执行了 SonarLint 报告,java:S1206 问题再次出现。
对于面临相同问题(或类似问题)的人:
下载一个Java虚拟机11;
在您的机器上安装JVM并注释(复制)安装目录(例如/opt/openjdk/jdk-11.0.2
);
在文本编辑器上打开 $ECLIPSE_HOME/eclipse.ini
文件;
添加以下行,将 <JAVA_HOME>
替换为带注释的安装目录;
-vm
<JAVA_HOME>/bin
eclipse.ini
文件应如下所示:
重新启动 Eclipse。
运行 通过右键单击项目文件夹、菜单 SonarLint
、项目 Analyze
,SonarLint 再次报告。
我在 Eclipse 上有一个小的 Java 项目,我喜欢使用 SonarLint 检查代码味道,但今天我遇到了一个奇怪的 java:S1206
问题,上面写着 "equals(Object obj)" and "hashCode()" should be overridden in pairs
。
在正确覆盖 equals
和 hashCode
方法的长期模型对象上报告了此问题。
我已经尝试重新运行 SonarLint 几次,但结果是一样的。我所做的最后修改是更新一些依赖项版本和导入。
我正在使用 Eclipse 2019-12 (4.14.0) Build id:20191212-1212 和 SonarLint for Eclipse 版本 5.0.0.15138。 Eclipse 运行正在使用 JDK 1.8.0_231.
项目代码可以在我的 ISS-Tracker GitHub repository.
上找到问题似乎与我用来执行 Eclipse 的 Java 虚拟机 (JVM) 版本有关。我修改了 eclipse.ini
文件以使用 JVM 11 执行 Eclipse,SonarLint 未报告任何问题。为了确定这一点,我删除了配置,重新启动了 Eclipse,重新执行了 SonarLint 报告,java:S1206 问题再次出现。
对于面临相同问题(或类似问题)的人:
下载一个Java虚拟机11;
在您的机器上安装JVM并注释(复制)安装目录(例如
/opt/openjdk/jdk-11.0.2
);在文本编辑器上打开
$ECLIPSE_HOME/eclipse.ini
文件;添加以下行,将
<JAVA_HOME>
替换为带注释的安装目录;
-vm
<JAVA_HOME>/bin
eclipse.ini
文件应如下所示:
重新启动 Eclipse。
运行 通过右键单击项目文件夹、菜单
SonarLint
、项目Analyze
,SonarLint 再次报告。