SonarQube为lambda用法提供未使用的私有方法问题

时间:2016-02-26 03:47:29

标签: java lambda sonarqube

我有以下逻辑;

..
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)。

1 个答案:

答案 0 :(得分:12)

这是SonarQube java分析器的已知问题:https://jira.sonarsource.com/browse/SONARJAVA-583

这是由于缺乏语义分析来解决正确的方法引用(从而确定this :: isActive引用的方法)。