2016-02-26 87 views
10

我有以下逻辑;SonarQube为lambda使用提供未使用的私有方法问题

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

正如你看到的,被在流结构中使用isActive方法,但是当我建立在詹金斯这个班,我从SonarQube未使用的私有方法的问题,它说你应该删除这个多余的私有方法。这是一个错误?如果没有,为什么他们还没有在分析结构中包含lambda逻辑?

显然,唯一的解决方案就是这么做;

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

+0

奇怪。 Lambdas似乎没问题,因为它似乎接受了作为方法参考的“MyClass :: isEnabled”。尝试'className :: instanceMethod'路由,其中​​'className'是定义'isActive'的类的名称,即'instanceMethod = isActive'。 –

回答