2016-02-26 19 views
10

Aşağıdaki mantığa sahibim; Gördüğünüz gibiSonarQube lambda kullanımı için kullanılmayan özel yöntem sorunu veriyor

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

, isActive yöntem akışı yapısında kullanılıyor ama Jenkins bu sınıf oluştururken, ben SonarQube kullanılmayan özel yöntem sorunu olsun, bunu ne gereksiz özel yöntemini silmek gerektiğini söylüyor. Bu bir hata mı? Değilse, neden hala analiz yapısında lambda mantığı dahil etmediler?

Bunu yapmak için tek çözüm açıkçası;

.filter(obj -> isActive(obj)), ancak tekdüzeliği ve hatta okunabilirliği (imo) yok eder.

+0

Garip. Lambdas iyi görünüyor çünkü bir yöntem referansı olan 'MyClass :: isEnabled' kabul ediyor gibi görünüyor. 'ClassName :: routeAdı', 'isActive', yani' instanceMethod = isActive 'tanımlandığı sınıfın adı olan' className :: instanceMethod' yolunu deneyin. –

cevap

İlgili konular