【问题标题】:SonarLint alerting for a java:S1206 issue but hashCode and equals are implementedSonarLint 针对 java:S1206 问题发出警报,但实现了 hashCode 和 equals
【发布时间】:2020-06-19 10:48:22
【问题描述】:

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

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

我正在使用 Eclipse 2019-12 (4.14.0) Build id:20191212-1212 和 Eclipse 版本 5.0.0.15138 的 SonarLint。 Eclipse 正在使用 JDK 1.8.0_231 运行。

项目代码可以在我的ISS-Tracker GitHub repository找到。

【问题讨论】:

    标签: java eclipse sonarlint


    【解决方案1】:

    似乎问题与我用来执行 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 文件应如下所示:

    1. 重启 Eclipse。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2013-07-22
      相关资源
      最近更新 更多