ぼくのかんがえたさいきょうのRubyMine(JetBrains IDE製品)のSQLコードスタイル設定ができた

モチベーションとしては生のSQLを結構書く機会があるが、いまいち自分の中でしっくりこない部分がある。 これは製品の善し悪しではなく今まで教えてもらった書き方とか、Gitでdiff取ったときにコードの差分が少ないとかが背景にある。

IDEのデフォルト設定(たぶん)

インデントが4だったり、select句の最初の項目やwhere句の最初に改行がほしかったり、exists句のJOINが変なところにあったりする。 結局こうした

結果

本当はJOINの中のサブクエリにインデントをつけたりしたかったがサブクエリ周りはいい感じの調整ができなかった。 主な変更点は

  • インデントを2
  • select句,where句の最初の項目に改行
  • join句のonは継続的インデントを設定
  • case 文のendの前に改行

たぶん人によってはselect句の各項目の前にカンマ付けたり、onにインデントをつけないとかあると思う。 この辺のSQLのコードスタイルなので完全に好みです

コードスタイルのXMLファイル置いておきます。今の設定を一度複製してそれに対してインポートするとよいです。 差分更新ではなく、デフォルト設定に対して全上書きされるので、自分の設定を一度XMLにエクスポートして code_scheme の中の属性をマージしてインポートすると安全だと思います

<code_scheme name="Custom" version="173">
  <SqlCodeStyleSettings version="6">
    <option name="QUERY_ALIGN_ELEMENTS" value="false" />
    <option name="SELECT_EL_LINE" value="101" />
    <option name="FROM_INDENT_JOIN" value="false" />
    <option name="FROM_ONLY_JOIN_INDENT" value="1" />
    <option name="FROM_PLACE_ON" value="12" />
    <option name="WHERE_EL_LINE" value="101" />
    <option name="WHERE_EL_BOUND" value="0" />
    <option name="EXPR_CASE_END" value="1" />
  </SqlCodeStyleSettings>
  <codeStyleSettings language="SQL">
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="2" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
</code_scheme>