我有以下逻辑;
..
if(list.stream()
.filter(MyClass::isEnabled)
.filter(this::isActive)
.count() > 0) {
//do smth
}
..
private boolean isActive(MyClass obj) {
return bool;
}
如您所见,流结构中正在使用isActive
方法,但是当我在Jenkins上构建此类时,我从SonarQube获取了未使用的私有方法问题,它说您应该删除这个冗余的私有方法。这是一个错误吗?如果没有,为什么他们的分析结构中仍然没有包含lambda逻辑?
显然,只有解决方案才能做到这一点;
.filter(obj -> isActive(obj))
,但它破坏了均匀性,甚至可读性(imo)。
答案 0 :(得分:12)
这是SonarQube java分析器的已知问题:https://jira.sonarsource.com/browse/SONARJAVA-583
这是由于缺乏语义分析来解决正确的方法引用(从而确定this :: isActive引用的方法)。