Java8でFindBugsを使ってみる
はじめに
2014/9/5時点での、FindBugsのJava8対応状況について調べてみました。
本体
3.0.0から対応されたようです。
http://findbugs.sourceforge.net/
Eclipseプラグイン
Marketplaceから最新版をインストールすれば、3.0.0対応のものが入ります。
Mavenプラグイン
対応されているようです。
http://mojo.codehaus.org/findbugs-maven-plugin/
なので、JenkinsでJob回してレポート収集、というところは出来そうですね。
試してないですが。
EclipseでJava8のコードをチェックしてみる
どういう挙動になるのか、少し試してみました。
以下、だいぶ適当ですがサンプルコード。
public class FindBugsJava8 {
public static void main(String[] args) {
final List<String> personNames = new ArrayList<String>();
personNames.add("Bob");
personNames.add("Mark");
personNames.add("Tom");
final Person p = new Person("Mark");
// Java8以前
for (String personName : personNames) {
if (p.equals(personName)) {
System.out.println(personName);
}
}
// Java8
personNames.stream().filter(personName -> p.equals(personName))
.forEach(System.out::println);
}
public static class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
}
拡張for文での記述と、stream,lambdaの記述で大体同じ処理をさせてます。
p.equals(personName)
がバグ検知されそうですね。
このコードのチェック結果は以下の通りでした。
バグの詳細
lambdaの中の記述は検出されない?ように見えました。
記述が悪いのか、設定が悪いのか、対応されていないのか、、、
もうちょっと使ってみないとよく分からないですね。
何か分かったらまた追記しようと思います。
ひとまず、チェックが出来るようになったというだけでもありがたいですよね。
Author And Source
この問題について(Java8でFindBugsを使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/nenokido2000/items/e07f9e2b23caac91f85b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .