Java 当子类将其声明为final时,SonarQube无法看到重写的等于
考虑下面的类Java 当子类将其声明为final时,SonarQube无法看到重写的等于,java,sonarqube,Java,Sonarqube,考虑下面的类 public class A { public boolean equals(Object obj){ ... } } public class C extends A { public final boolean equals(Object obj) { ... } } SonarQube分析未能看到Coverridenequals类A的方法,因为C::equals是最终的 导致以下违规行为: 添加字段的子类应覆盖“e
public class A {
public boolean equals(Object obj){
...
}
}
public class C extends A {
public final boolean equals(Object obj) {
...
}
}
SonarQube分析未能看到C
overridenequals
类A
的方法,因为C::equals
是最终的
导致以下违规行为:
添加字段的子类应覆盖“equals”(squid:S2160)
所以问题是为什么这个规则会在这种情况下触发?C::equals
方法确实已经超越了A::equals
(签名保持不变-使方法成为最终值不会更改签名)
这不是一只虫子吗
SonarJava 5.4这确实是一个假阳性。SonarJava目前无法支持这种情况,类之间的继承关系只能在语义引擎中从子类计算到父类
已创建以下JIRA票证来处理此问题:问题是什么?根据SonarQu应该是什么规则(您使用什么版本和插件?)查找此问题?@G.Ann-SonarSourceTeam更新为question@JeroenHeiersonarqube 7.2.1,squid:S2160。存在于6.3中too@Sa广告,你的Java版本是什么?您可以在管理>市场中找到它