(Eclipse4.2 "Juno"の新機能一覧はこちら)
http://d.hatena.ne.jp/takahashikzn/20120629/1340961428
Eclipse 3.7 "Indigo"がリリースされました。
Eclipse 3.6 "Helios"がリリースされてからちょうど1年ですね。
Mergedocの3.7対応版もリリースされています。さすが仕事が早い!
http://d.hatena.ne.jp/cypher256/20110623/p1
ついでにEclipseLink-2.3.0もリリースされているようです。
http://www.eclipse.org/eclipselink/releases/2.3.0.php
コチラについては後日レポートを。
新機能は?
さて、今回の新機能を見ていきましょう。このページを翻訳しました。
http://download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-news-part2.html
いつも通りですが超意訳してますので、
間違っている箇所があったら教えてくださいませ。
JDK7サポートについて
JDK7が正式リリースされていない以上、Indigoの正式リリースにJDK7サポート機能を含めるわけには行かない、というスタンスのようです。
それでもJDk7を使いたい方はコチラが参考になるでしょう。
http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29
(2011-09-28追記: Eclipse3.7.1でJDK7サポートが追加されたようです)
Javaエディターの新機能
Hyperlinks
Ctrlを押しながら書く要素へマウスカーソルを合わせたときに表示される各種ハイパーリンク。
Indigoでは、以下の3つのリンク機能が追加されました。
"Introduce new local with cast type" quick assist
instanceofのifステートメントの中で、
if (obj instanceof String) { String s = (String) obj; }
のように、"String s = (String) obj"をアシストできるようになりました。
"Join variable declaration" quick assist for variables initialized to null
nullで初期化する変数宣言について、『変数宣言を結合する』クイックアシストが追加されました。
(訳注:どういう機能なのかわかりませんでした…)
"Exchange Operands" quick assist for comparison operators
例えば、
a >= b
のような式を
b <= a
のように、比較演算子の向きを変えるクイックアシストが追加されました。
個人的に、これはちょっとウレシイかも。
New 'Put expression in parentheses' quick assist
指定した式を明示的に括弧で囲むクイックアシストが追加されました。
a > 0
へ適用すれば
(a > 0)
になるし、
a > b && b > 0
へ適用すれば
(a > 0) && (b > 0)
になります。
'Add missing case statements' quick assist
Enumを使ったswich文のとき、一部のEnum値のcase文しか書いていないときに
残りのEnum値のcase文を補完できます。
Semantic coloring for abstract classes
抽象クラスと通常のクラスで、構文ハイライト設定を別に設定できるようになりました。
Quick Outline shows inherited members for nested type
クイックアウトラインで、継承されたメンバーも一緒に表示できるようになりました。
Ctrl+drag to add to Call Hierarchy
Ctrlを押しながらメソッドをドラッグしたとき、呼び出し階層のメンバーへドロップできるようになりました。
Navigate to {@inheritDoc} target
{@inheritDoc}からのハイパーリンクで、inheritDocで継承されたJavadoc宣言(要するに親クラスのメソッドのJavadoc)
へとジャンプできるようになりました。
Navigate to 'break' and 'continue' target
(for文などの中で)continue文、break文、ラベルへとジャンプできるようになりました。
Format Java elements via Outline view
アウトラインビューから要素を選択して、コードフォーマットができるようになりました。
Disable smart indentation on 'Enter'
エンターキーを押したときにスマートインデントしない(→必ずキャリッジリターンする)ように設定できます。
Javaコードフォーマッターの新機能
New line after annotations
アノテーションについての詳細な改行フォーマット設定が追加されています。
Preserve whitespace before line comment
System.out.println("aaa"); // aaaを表示 System.out.println(1); // 1を表示
こんな風に、コードの行末コメントを桁揃えしてくれるっぽいです。
コレはなかなかナイスな機能かも。
New option to include 'assert' in null analysis
ECJコンパイラの『潜在的なヌルポインターアクセス』の精度が上がったようです。
assert文でのnullチェックも正当なnullチェックとして考慮されるようになりました。
従って、この機能をONにすると
assert obj != null; if (obj == null) { ... }
というステートメントでは、"if (obj == null)"の箇所で
『冗長なnullチェック』であると怒られてしまうようです。
元々この機能はデフォルトでONになっており、明示的にOFFに出来なかったのが
設定項目化しただけのようです。
Missing Javadoc tags for method type parameters no longer reported by default
メソッドにGenerics宣言が付いているとき、Javadocで型パラメータを宣言しなくても
警告が出ないようにできます。
これまでは、
/** * @param <T> ... * @param <U> ... * @param <M> ... * @param obj ... */ public <T,U,M> void foo(Object obj) { ... }
と書かなければならなかったのが、
/** * @param obj ... */ public <T,U,M> void foo(Object obj) { ... }
だけで済むようになります。
Improved detection of unused local variables, parameters and fields
使っていないローカル変数の検知精度が向上したようです。
for (int var = 42; ; var++) { var -= 17; // 以下、varを使っていない任意のコード }
というコードで、varが実質的に使われていないことを検知できるようになりました。
Unavoidable generic type problems
どうしようもないケースでのジェネリクス系警告を抑制できるようになりました。
@Override public void set(List arg) { // rawタイプの警告(1) super.set(arg); arg.set(0, "A"); // rawタイプの警告(2) }
例えばこのようなケースの場合、メソッドをオーバーライドしているので
オーバーライドしているメソッド自身のシグネチャを変更できないのであれば、
rawタイプを使うことは避けられないわけです。
これまでは@SuppressWarningsを使って頑張るしかなかったわけですが、これからは楽になります。スバラシイ。
Compiler detects methods that can be static
スタティックにできるメソッドを検知できるようになりました。
ビューやダイアログに関する新機能
Open Type Hierarchy on multiple type containers
『型の階層を開く』を使える場所が増えました。
パッケージやソースフォルダ、プロジェクトなどを複数選択して、
それらに中に含まれる全ての型階層を一発で表示できるようです。
Configure 'Search In...' in Call Hierarchy
呼び出し階層ビュー内で検索できるようになりました。
(訳注:呼び出し階層のフィルタを掛けられるようになるという意味じゃないかと。。。)
History for breakpoint conditions
デバッガの条件付きブレークポイントで、条件式の評価結果の履歴を見ることが出来るようになりました。
Prompt before deleting conditional breakpoints
条件付きブレークポイントを削除する際、確認ダイアログを表示するようになりました。
Step filtering for bean-style getters and setters
デバッガで『ステップイン/ステップおーばー/ステップリターン』ボタンにフィルタを掛けられるようになりました。
つまり、例えばJDKのクラスなど、ステップインしても無意味なコードを飛ばしてステップインできるようになったということです。
これはかなり役に立ちそう。
プロパティファイルエディタの新機能
New "Escape backslashes" and "Unescape backslashes" quick assists in properties file editor
バックスラッシュのエスケープ/エスケープ解除がクイックアシストで出来るようになりました。
Auto-escaped characters and editor hovers
native2ascii後のプロパティファイル(ユニコードエスケープ後のファイル)で、文字列にカーソルを当てるとホバーで元々の文字列を表示できるようになりました。