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

bur*_*ete 14 java lambda sonarqube

我有以下逻辑;

..
if(list.stream()
       .filter(MyClass::isEnabled)
       .filter(this::isActive)
       .count() > 0) {
    //do smth
}
..
private boolean isActive(MyClass obj) {
    return bool;
}
Run Code Online (Sandbox Code Playgroud)

如你所见,isActive方法正在流结构中使用,但是当我在Jenkins上构建这个类时,我从SonarQube获得了未使用的私有方法问题,它说你应该删除这个冗余的私有方法.这是一个错误吗?如果没有,为什么他们的分析结构中仍然没有包含lambda逻辑?

显然,只有解决方案才能做到这一点;

.filter(obj -> isActive(obj)),但它破坏了均匀性,甚至可读性(imo).

ben*_*ico 13

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

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