Re: IntelliJ IDEAでJavaのstatic import文に関する効率化設定をLive Templateで実現する
http://d.hatena.ne.jp/absj31/20130218/1361134157
コメントをTwitterで済まそうと思ったら、うまく伝えられなかったのでトラックバックします。static importの展開がちょっと冗長とのことですが、ちょっと設定しとくと元のエントリより1ステップほど減らせます(たった1ステップだけかよ、とか言わないw
まずは、Live Templateの設定。ほとんど変わらないのだけど、Optionsの"Use static import if possible"をチェックしとく。これで、static importにできそうな部分はstatic importに置き換えてくれる。ただ、残念な事に"Assert.assertThat()
"しか変換対象になってくれない。:-(
すぐさま試さないで、もうちょっと仕込みをしとく。ひとつは、Settings->Code Style->Java->Importsの設定。ここの"Names count to use static import with '*'"に入れた数字が、static importで "*" を使いはじめるimport文の数。以下のスクリーンショットだと、3つ同じクラスのメソッド使ったら "*" にまとめる(static importはつねに "*" で良ければ、1 とか 0 を設定する。
個別のパッケージだけ "*" を許可したいのであれば、その下の"Packages to Use Import with '*'" にパッケージを指定する。static importで有効にしたい場合は、"Static"にチェックを入れる。さっきのスクリーンショットはつまり、こうゆうこと。
- 普通のimport文はいかなる場合も "*" を許さない("Class count to use import with '*'"を99*1)
- static importは同じクラスを3つ使ったら "*" にまとめる("Names count to use static import with '*'"を3)
- "
org.junit.Assert
"は常にstatic importで "*" にまとめる("Packages to Use Import with '*'"に "org.junit.Assert.*
"を指定)
このあたりのことは,この辺も参考になるかも。→ 10日目 IDEの設定(Project Settings) - marsのメモ
これで終わりじゃ無くて、最後にもうひとつ(ふたつ?)。Settings->Editor->Auto Importで、以下の2つにチェックを入れる。
- "Optimize imports on the fly"
- "Add unambiguous imports on the fly"
これで、必要/不要なimport文を即座に追加・削除してくれる。この設定、ある意味で諸刃の剣で、常に必要とするimport文のみにするので、ちょっとコメントアウトしてみただけでも、それに該当するimport文が即座に消えて無くなる。あと、人さまのコードをちょっと弄っても、import文の最適化をしちゃうので、良かったり悪かったり。:-P
先と同じく,この辺も参考になるかも。→ 11日目 IDEの設定(IDE Settings:前編) - marsのメモ
ここまで来れば準備完了。実際やってみるとこうなる。まずは、Live template展開。
テキトウに穴埋めして展開完了。
assertThat()
はstatic import化してるけど、CoreMatchers
がまだ。これはどうやら、そのままらしい。仕方ないので、CoreMatchers
にカーソル寄せて、Alt+Enter(MacだったらOpt+Enter)で "Add on demand static import for 'org.hamcrest.CoreMatchers'"を選択。(´・ω・`)
あとはごらんの通り。
ps.
あとLive templateをコード補完の候補に紛れ込ませる設定はこちらを参照。→ IntelliJの隠しオプション一覧 - marsのメモ
ps2.
id:sioiri さんのLive Templateにするとさらにもう1ステップ減らせますね。
org.junit.Assert.assertThat($actual$, $matcher$); $actual$ ... Expression:complete() $matcher$ ... Expression:classNameComplete(), Default value: "is"
だがしかし、正直テンプレートの自由度についてはEclipseのほうが上なのだ。
→ 全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜 - Yamashiro0217の日記
というか伝統的にIntelliJがイケてない(下記リンクのおまけ参照。:-P
→ 31日間ReSharper一周 ... それIDEAでもできるよ(その7) - marsのメモ
*1:もっと多くても良い