2016-02-26 20 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'。 –

回答