しおしお

IntelliJ IDEAのことなんかを書いてます

IntelliJのLanguage Injectionを調べてみた

特定のメソッドの引数を別言語(SQL正規表現JavaScript)として扱う機能のLanguage Injectionについてのまとめ。

Language Injectionの設定は、「Settings」->「Language Injections」にあります。
デフォルトでも、これだけの設定がされています。
f:id:sioiri:20121218081813p:plain

例えば、java.sql.Connectionの場合、幾つかのメソッドの引数がSQLとして設定されていることがわかります。(ダブルクリックするとこの画面が開きます)
f:id:sioiri:20121218082039p:plain

実際にLanguage Injectionが設定されているメソッドを呼び出して見ると、なんとなくSQLになっているのがわかります。
f:id:sioiri:20121218082225p:plain

Database Windowからテーブルを選択して、Find Usageするとちゃんと引っかかるので、SQLとして認識されているのがわかります。
Database Windowの使い方は、2012-12-18 - marsのメモを見てくださいまし。
f:id:sioiri:20121218082618p:plain

よくSQLを定数化して書いたりしますよね?この場合でもLanguage Injectionは聞いてくれるみたいです。
f:id:sioiri:20121218083039p:plain

さすがに別クラスにある定数は、SQLとして認識してくれないようです。
f:id:sioiri:20121218083305p:plain

この場合は、Quick Fix(Alt + Enter)からInject Languageを選んでSQLとして認識させる必要があるようです。
f:id:sioiri:20121218083519p:plain

会社行く時間になったので、ここまで。