文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

eclipse4.5(Mars)のjavaのコードフォーマッターが怪しい

なんか怪しい・・・
f:id:treeapps:20150826002719p:plain

最近会社のPCをmacbook proに新調して貰えたので、これを気に全てのeclipseを最新版、Eclipse Marsに変えてみました。

Marsなんですが、ダウンロードするとeclipseのバイナリ1個しか入ってませんでした。Lunaまではpluginsやconfigration等のファイルが沢山あったのですが、Marsは1ファイルのみでスッキリしています。

なんか・・・

問題無くMarsの環境設定を変えていきコーディングを始め、よし、Command + Shift + f でコードフォーマットだ!と思ったら、「あれ、なんかおかしい」。改行のされ方がおかしい。おかしい。。。。

フォーマッタの設定自体は会社でカスタマイズしたものなのですが、どうもEclipse LunaとEclipse Marsで改行、それもコメント前後の改行のされ方が違う事が解りました。

Java code formatter in Eclipse 4.5 has been completely rewritten.

http://eclipse-n-mati.blogspot.jp/2015/06/eclipse-mars-how-to-switch-back-to.html

こちらのサイトを見ると、どうやらMarsになってコードフォーマッターのコードは完全に書き直して作られたようです。その影響なのか、「ちゃんと動かねーぞオラァ!!!」という声がネット上で沢山見られます。バグバグみたいですね。

フォーマットしたいコード

こういうコードがあって、これをフォーマットしたいと思います。

    public static enum Enum {
        /** aaa */
        aaa,
        /** bbb */
        bbb,
        /* ccc */
        ccc,
        /* ddd */
        ddd,
        ;
    }

Eclipse Lunaでフォーマットした場合

フォーマット前と変わりません。私としては、こうなって欲しいのです。

    public static enum Enum {
        /** aaa */
        aaa,
        /** bbb */
        bbb,
        /* ccc */
        ccc,
        /* ddd */
        ddd, ;
    }

Eclipse Marsでフォーマットした場合

一方Marsでフォーマットすると、こうなってしまいました。Lunaと全く同じコードフォーマッターをimportしたのに、結果が異なってしまいました。

    public static enum Enum {
        /** aaa */
        aaa, /** bbb */
        bbb,
        /* ccc */
        ccc,
        /* ddd */
        ddd,;
    }

どうもコメント「/**」を含んだ場合のフォーマットがおかしい???ようです。バグっているのか仕様が変わったのかもよく解りません。


多分eclipse本体のバグだと思われるのですが、もし会社でMars以前のEclipseでコードフォーマッターをカスタマイズして共有して皆で使ってるぜ!という方がいれば、Marsの使用はもう少し控えた方がいいかもしれません。しかし本体がバグると本当に困るんですよね。いちいち環境設定し直すのが面倒。。。