VS Code をしばらく使ってみて気づいたのですが、 実は Apex ファイルに対応したフォーマッターが無いらしいです。
そこで、 Uncrustify という CLI と VS Code の Extension を使って、 Java ファイルとしてフォーマットさせる方法を試してみました。
uncrustify をインストール
まずは、Uncrustify を Homebrew
でインストールします。
$ brew install uncrustify
$ uncrustify -v
=> Uncrustify-0.68_f
続いて、VS Code に vscode-uncrustify Extension をインストールします。
VS Code を Command + Shift + p > Reload Window
でリロードしておきます。
uncrustify の設定
VS Code のコマンドで uncrustify.cfg
を作成します。
Command + Shift + p > Uncrustify: create default config file
VS code のエクスプローラから uncrustify.cfg を開き以下を修正
その他の項目も以下の要領でお好みで編集しておきます。
項目 | 値 | 説明 |
---|---|---|
indent_with_tabs | 0 | ハードスペース化 |
indent_columns | 4 | 4 スペースでインデント |
indent_class | true | class 内のインデントを有効化 |
VS Code の設定
Command + ,
で設定を開き、 JSON エディタに切り替えてから以下を追加
"uncrustify.langOverrides": {
"apex": "JAVA",
"apex-anon": "JAVA"
}
最後に Command + Shift + p > Reload Window
で再度リロードすれば Apex ファイルでもフォーマッター使える様になります。
全てのプロジェクトで共通の設定
uncrustify.cfg はそのままではプロジェクト単位で適用されてしまうため、新規プロジェクトの作成時に毎回設定し直す必要があり面倒ですよね。そこで、これを全プロジェクト共通の設定としてしまいましょう。
まず上で作った uncrustify.cfg を適当なディレクトリ(今回は~/.uncrustify/uncrustify.cfg
)にコピーしておきます。
そして、Command + ,
で設定を開き JSON エディタに切り替えてから以下を追加します。
"uncrustify.configPath.osx": "$HOME/.uncrustify/uncrustify.cfg",
再度 Command + Shift + p > Reload Window
で再度リロードすれば全てのプロジェクトで Apex ファイルをフォーマットできるようになります。