torutkのブログ

ソフトウェア・エンジニアのブログ

FindbugsとJava SE 8

(2014-07-03追記)FindBugs 3.0.0-rc2がリリースされています。
http://findbugs.sourceforge.net/

Java SE 8に対応するFindbugsは、次のバージョン3.0.0の予定ですが、現時点ではまだリリースされていません。NetBeans 8.0でFindbugsプラグインFindbugs Integration」をインストールしてもラムダ式を使用したコードがあると、解析が途中でエラーとなってFindbugsの警告が1つも表示されません。invoke dynamicを使うクラスファイルをFindbugs 2.0では解析できないためです。

昨年12月に、Findbugs 3.0.0のSNAPSHOT版が公開されています。これを使うとinvoke dynamicがエラーにならず解析できます。
http://sourceforge.net/projects/findbugs/files/findbugs/3.0.0/

ただし、ラムダ式によってクラスファイルに生成されるprivateメソッドが明示的に呼び出されないため、

rangevalidation.RangeValidation.lambda$new$0(int)は、決して呼び出されません。

のようなFindbugs警告が発生してしまいます。

そこで、Findbugsソースコードの最新版(trunk)をビルドして使ってみます。
https://code.google.com/p/findbugs/source/checkout
に記載のあるとおりgitでリポジトリをcloneし、ビルドして使用してみたところ、SNAPSHOT版にあるようなprivateメソッドの未使用警告は検出されませんでした。