【发布时间】:2017-12-29 23:13:20
【问题描述】:
我的问题与this 非常相似,只是我在 SonarLint V3 (squid:S1948) 中遇到了这个问题。
我的代码是:
public class Page<T> implements Serializable {
Summary summary;
List<T> elements;
public Page() {
summary = new Summary();
}
public List<T> getItemsReceived() {
return elements;
}
public void setItemsReceived(List<T> list) {
this.elements = list;
}
public Summary getSummary() {
return summary;
}
public void setSummary(Summary summary) {
this.summary = summary;
}
}
摘要对象实现可序列化。
public class Summary implements Serializable {
int offset;
int limit;
long totalElements;
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public long getTotalNumberOfElements() {
return totalElements;
}
public void setTotalNumberOfElements(long totalNumberOfElements) {
this.totalElements = totalNumberOfElements;
}
}
现在,如果我将 List 替换为 ArrayList ,那么 SonarLint 中会出现另一个警告,即我们应该使用接口而不是实现类。
我认为这可能会在 SonarQube 中解决,但对于 SonarLint 我不知道。 这是一个错误还是我做错了什么?
【问题讨论】:
-
SonarQube 和 SonarLint 共享负责检测 Java 代码 redirect.sonarsource.com/plugins/java.html 中问题的分析器,因此如果您在两个工具中使用相同版本的 SonarJava,您应该会看到相同的问题。现在关于您的代码,在哪个文件和哪一行出现问题?
-
Page 类。 SonarLint 报告 List
是不可序列化的,因此应该是。如果我用 ArrayList 替换它,那么它报告我应该使用接口。在这两种方式中,我都得到了这个。我的问题:这是几年前 SonarQube中的一个错误,由于我使用的是最新版本的SonarLint,为什么这仍然出现在 intellij 中? -
这与您链接的问题不同。看我的回答。
-
严格回答问题:添加
// NOSONAR隐藏警告。 (但是Page<T extends Serializable>也是必要的,正如@TiborBlenessy 提到的那样。)
标签: java intellij-idea sonarqube sonarlint