Java 在字符串比较中使用==而不是equals不会被声纳捕获

Java 在字符串比较中使用==而不是equals不会被声纳捕获,java,sonarqube,sonarlint,sonarlint-intellij,Java,Sonarqube,Sonarlint,Sonarlint Intellij,我有以下代码: String s1 = "a"; String s2 = "a"; if (s1 == s2) { System.out.println("string not equal"); } 当我使用Sonarint分析代码时,它不会被它捕获。 我想这应该被以下规则抓住 squid:S1698-“等于”被覆盖时不应使用“==”和“!=” 我已经用Sonar Qube 7.0在独立模式和连接模式下对此进行了检查。 有人知道为什么声纳会这样吗 ---

我有以下代码:

String s1 = "a";
    String s2 = "a";
    if (s1 == s2) {
        System.out.println("string not equal");
    }
当我使用Sonarint分析代码时,它不会被它捕获。 我想这应该被以下规则抓住

squid:S1698-“等于”被覆盖时不应使用“==”和“!=”

我已经用Sonar Qube 7.0在独立模式和连接模式下对此进行了检查。 有人知道为什么声纳会这样吗

---------------编辑------------------

同样的情况也发生在:

Integer x= 500;
Integer y= 500;
if (x==y){
            System.out.println("not equal");
        }

它可能没有显示警告,因为它们是
String
文本。如果您将其中一个更改为
新字符串(“a”)它是否显示警告?实际上,这是正确的行为,因为您使用的是字符串文本,默认情况下它们被插入
intern()
并添加到常量池中。所以在这种情况下==是正确的。请参阅:@GBlodgett。如果我将其更改为新字符串(“a”)。Sonar会给我错误-不应使用构造函数实例化“字符串”但仍然没有给平等error@Nonika-SonarLint规则squid:S1698是否应在本例中应用?@jbniset。是的规则已启用。此外,我希望SonarLint独立插件也能捕获此类基本问题,即使IntelliJ的检查员也将其报告为问题