Friends - IntelliJ

DBFluteとは直接無関係ながらも、同時に利用するととても便利なライブラリを紹介します。

DBFlute と IntelliJ

DBFluteは、利用上において特に IntelliJ に依存してはいません。ですが、IntelliJ 上で DBFlute の利用を支援するための情報や設定のExampleなどが提供されています。

Inspections設定の共有

警告ノイズたち

以下、代表的な警告ノイズです。

  • 一行だけの Lambda が Expression Style にできるよ
  • その Lambda が Method Reference にできるよ
  • その Behavior のインスタンス変数、初期化されてないよ

特に DBFlute の場合、Lambda の中がたまたま一行でも、すぐに追加される可能性高いですし、cb.query() の一行は横に長くなりがちなので、最初から Block Style で書きたいと思う人も多いです。 また、op -> op.likePrefix() など、Lambda引数の型をあまり意識せずに短く書きたいことも多く、無理に Method Reference にしたくないと思う人も多いです。

つまり "余計なお世話警告" になってしまいっていて、これらが警告ノイズとなり本質的な警告を見逃してしまう可能性があります。 IntelliJの設定を調整して、心地よい警告ライフを過ごしたいものです。

IntelliJでこれらを OFF にする方法は、Twitterで "jflute intellij" で検索してください。

ただ、警告を調整したら、必ずチーム内で共有しなければなりません。警告の設定が人によってズレてると結局その警告は機能しないからです。

jfluteお手製の警告調整済xml

大変だと思うので、警告調整済みの IntelliJ の .idea ディレクトリに配置する xml を用意しています。

DBFlutespection.xml
調整されたInspectionsのProfileの設定
profiles_settings.xml
このプロジェクトで DBFlutespection を使うと決めている
misc.xml
EntryPointsManagerでDIのアノテーションが設定されている

これら設定ファイル、オープンソースとして公開されています。 (コピーして使ってOKです。また更新するかもしれませんので、時々ウォッチを。ちなみに、LastaFluteのExampleですがそこ関係ありません)

三つのファイルをコピーして構成どおりの場所に配置し、バージョン管理システム(git)のコミット対象にして共有すれば、チームメンバーみな調整済みの同じ警告設定になります。

e.g. IntelliJのInspectionsに関する設定ファイルの構成 @Directory
[project]
 |-src/main/java
 |-src/test/java
 |-...
 |-.idea
 |  |-inspectionProfiles
 |  |  |-DBFlutespection.xml
 |  |  |-profiles_settings.xml
 |  |-misc.xml
 |  |-...
 |-...

もし、少し合わないところや、さらにOFFにしたい警告があるようであれば、これを土台にさらに設定を調整しても良いでしょう。 (DBFlutespection という Profile 名も変更してしまって構いません)

misc.xml は、すでに存在しているかもしれません。misc というからにはいろいろなものが入るのでしょう。 すでに存在している場合は適切にマージをしましょう。

そして、gitignoreの設定も調整しましょう。

フォーマッター設定の共有

残念なデフォルトフォーマット

当然、人によって違うかもしれませんが、IntelliJのデフォルトのコードフォーマットを残念と思う人は多いです。 ただ、それは Eclipse も同様なので、やはりちゃんと調整してを共有するのが吉です。

IntelliJであれこれ調整する方法は、Twitterで "jflute intellij" で検索してください。

フォーマットを調整したら、必ずチーム内で共有しなければなりません。フォーマットの設定が人によってズレてると100%カオスだからです。

保存したら自動でフォーマット

フォーマッターをしっかり設定しても、フォーマットする人としない人が混ざるとただの差分地獄になります。 やるからにはしっかり使ってもらう施策が必要です。ショートカットキーを浸透させるのも手ですが、そもそもフォーマットを自動化してしまうのも手です。 ここでは、後者の方法を紹介します。

IntelliJに、Save Actions というプラグインをインストールして設定すると、保存(ctrl+S)するときに自動的にフォーマットがかかるようになります。 (厳密には、IntelliJは自動で保存がされるので、その場合はフォーマットされません。明示的な保存(ctrl+S)をしたときにフォーマットされます)

  • Save Actionsプラグインのjarファイルをダウンロード
  • Preferences の Plugins にて、そのjarファイルをimport

これは、チームメンバーみなに入れてもらわないといけません。

また、フォーマッターを使っているプロジェクトと使っていないプロジェクトを兼務している場合に、使っていないプロジェクトで勝手にフォーマッターがかかってしまうとよくありません。 メニューの File - Other Settings - Default Settings の Save Actions にて、activate を OFF にしましょう。 こうすると、Save Actionsの設定がされていないプロジェクトで勝手に Save Actions が有効になってしまうのを防ぐことができます。

もろもろの Save Actions の調整方法は、Twitterで "jflute intellij" で検索してください。

jfluteお手製のフォーマット調整済xml

大変だと思うので、Save Actionsの設定も含めて、フォーマット調整済の IntelliJ の .idea ディレクトリに配置する xml を用意しています。

さらに、こちらのフォーマット設定は、DBFluteが提供している Eclipseの "DBFlute Style" なフォーマッターとほぼ同じになるように調整されていますので、IntelliJ, Eclipse どちらでフォーマットしてもほぼ同じになるようになっています。("IDEはお好きように" という開発スタイルがしやすいように)

codeStyleSettings.xml
調整されたプロジェクトのコードフォーマットの設定
saveactions_settings.xml
Save Actinosの設定

これら設定ファイル、オープンソースとして公開されています。 (コピーして使ってOKです。また更新するかもしれませんので、時々ウォッチを。ちなみに、LastaFluteのExampleですがそこ関係ありません)

二つのファイルををコピーして構成どおりの場所に配置し、バージョン管理システム(git)のコミット対象にして共有すれば、チームメンバーみな調整済みの同じフォーマット設定になります。 また、Save Actionsプラグインが入っていれば、保存(ctrl+S)で自動的にフォーマットがかかります。

e.g. IntelliJのフォーマッターに関する設定ファイルの構成 @Directory
[project]
 |-src/main/java
 |-src/test/java
 |-...
 |-.idea
 |  |-inspectionProfiles
 |  |  |-...
 |  |-codeStyleSettings.xml
 |  |-saveactions_settings.xml
 |-...

そして、gitignoreの設定も調整しましょう。

gitignore戦略は?

個人設定とプロジェクト設定が混じった.idea

ちょっと困ったことに、個人設定とプロジェクト設定が混じって.idea配下に保存されます。

ゆえに、.ideaをignoreすれば良いわけでもなく、commitすれば良いわけでもないのが痛いところ。 しっかり個別個別に調整しないといけません。

jfluteお手製のgitignore

Inspectionsやフォーマッターの設定などを考慮したgitignore設定がこちらです。

e.g. IntelliJのgitignore戦略 @gitignore
# IntelliJ IDEA
/.idea/artifacts
/.idea/libraries
/.idea/modules
/.idea/compiler.xml
/.idea/modules.xml
/.idea/vcs.xml
/.idea/workspace.xml
/*.iml
/out

ここに列挙されていないもので、ignoreにしたいものがあれば追加しましょう。

DBFlute な Live Template

DBFluteが提供している Eclipse の Editor Templates の IntelliJ 版を提供しています。

メニューの File - Import Setttings... で以下の jar ファイルを指定して Live Templates だけ選択して import すれば利用できます。 (Live Templates 以外を選択すると、ご自身の設定が上書きされる可能性があります)

補完テンプレート
dbflute-intellij-live-templates.jar

裏技は使えませんが、アンスコで始まる系の補完はほとんどそのまま利用できます。_ll, _li をぜひ活用していきましょう!Eclipseよりも使いやすくなっている部分もあります。

Deco, Hakiba, thank you for your migration from Eclipse.