我有一个简单的两级层次结构,由一个名为AbstractTable的抽象超类组成,以及三个具体的子类,表1、表2和表3。
每个子类为三个absract方法提供一个不同的实现
例如,Table1类显示:
@Override
protected String getSequence() {
return "seq_table1";
}
@Override
protected String getIdColumn() {
return "id_table1";
}
@Override
protected String getTable() {
return "table1";
}
表2和表3有相似的实现,它们响应不同的文字
然而,Sonar似乎没有区分不同的文字,他告诉我所有的线条都是重复的
规则:源文件不应具有任何重复的块
为什么?我认为声纳应该将不同的文字视为不同的线条。
规则的当前操作是否正确有人能向我解释一下在这种情况下如何通过规则吗
谢谢你的预付款。
中的答案https://github.com/SonarSource/SonarJS/issues/717是针对SonarJS的,但我想它也适用于SonarJava。
至于避免它的方法:你可能会覆盖子类的构造函数,手上有这样的东西:
public class Table {
private String sequence;
private String idColumn;
private String table;
public Table(String sequence, String idColumn, String table) {
this.sequence = sequence;
this.idColumn = idColumn;
this.table = table;
}
//getters and setters if needed
}
public class Table1 {
public Table1() {
super("seq_table1", "id_table1", "table1");
}
}