2016-02-26 9 views
10

Mam następującą logikę;SonarQube podając nieużywany problem z metodą prywatną dla użycia lambda

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

Jak widać, isActive metoda jest wykorzystywana w strukturze strumienia, ale kiedy budować tę klasę na Jenkins, mam niewykorzystaną prywatną emisję metodę z SonarQube, to mówi, należy usunąć tę nadmiarową sposób prywatny. Czy to błąd? Jeśli nie, dlaczego nie uwzględnili logiki lambda w swojej strukturze analizy?

Jedynym rozwiązaniem jest oczywiście to zrobić;

.filter(obj -> isActive(obj)), ale niszczy jednolitość, a nawet czytelność (imo).

+0

Dziwne. Lambda wydaje się być w porządku, ponieważ wydaje się akceptować 'MyClass :: isEnabled', która jest referencją do metody. Spróbuj trasy 'className :: instanceMethod', gdzie' className' jest nazwą klasy, w której zdefiniowano 'isActive', czyli' instanceMethod = isActive'. –

Odpowiedz