VSCodeの拡張機能にApexのフォーマッターが無いため、外部ツールと組み合わせて実現させます。
参考にした記事
Uncrustify インストール
Uncrustify という外部ツールをインストールします。
下記サイトから Uncrustify の最新版バイナリをダウンロードします。(投稿時点の最新は 0.76.0)
ダウンロードした zip ファイルを解凍し、任意のフォルダに配置します。
ここでは C:\dev\uncrustify-0.76.0_f-win64
とします。
C:\dev
└ uncrustify-0.76.0_f-win64
├ bin
│ └ uncrustify.exe ← 必要なのはこのファイルです
└ share
├ doc
└ man
uncrustify.exe
のあるフォルダ C:\dev\uncrustify-0.76.0_f-win64\bin
を環境変数PATHに通します。
ユーザー環境変数かシステム環境変数かは都合に合わせて設定してください。
VSCode の Uncrustify 拡張機能セットアップ
VSCode の拡張機能の検索窓から uncrustify
と入力し、Uncrustify の拡張機能が表示されたらインストールボタンをクリックします。
インストールが完了したら、拡張機能の歯車マークから設定画面を開きます。(ウィンドウ左下の大きな歯車から設定を開き、検索窓から uncrustify と入力しても表示されます)
Uncrustify: Lang Override
の settings.json で編集
をクリックします。
apex のコードを Java のルールでフォーマットするために下記のように記載します。
"uncrustify.langOverrides": {
"apex": "JAVA",
"apex-anon": "JAVA"
},
追記した様子。
設定が反映されるよう、念のため VSCode を再起動します。
以上で設定は完了です。
Uncrustify の設定ファイル作成
設定ファイルが用意されている場合はこの作業は不要です
[表示] - [コマンドパレット] を開き、SFDX
と入力して候補に表示される SFDX: プロジェクトを作成
から指示に従ってプロジェクトを作成します。
次に [表示] - [コマンドパレット] を開き、uncrustify
と入力して候補に表示される Uncrustify: Create default config file
を選択します。そうするとプロジェクト直下に uncrustify.cfg
というファイルが作成されます。
ただ、デフォルトの設定のままだときれいにフォーマットされない場合があるので、下記のコードを上書きします。
(設定ファイルの項目一つ一つを把握しきれていないため、どなたかが Apex用に作成してくださったものを拝借しています)
フォーマット操作
手動フォーマット
Apex のコードを開いた状態で Alt+Shift+F
でフォーマットされます。
【例】
Alt+Shift+F
を押すと、、、こうなります↓
自動フォーマット設定
自動フォーマット設定をすることで、ファイル保存時に自動フォーマットしてくれるため、上記手動フォーマットは不要になるのでおススメです。
設定画面から Editor: Format On Save
のチェックボックスを付けます。
(注)Files: Auto Save
設定が afterDelay
になっていると自動フォーマットが効かないので注意してください。
(補足)フォーマットされない表現
switch ステートメント
Apex の switch 文が含まれているコードはフォーマットされないことを確認しています。
if 文に置き換えることをおススメします。
switch on i {
when 2 {
System.debug('i is 2');
}
when -3 {
System.debug('i is -3');
}
when else {
System.debug('default');
}
}
if (i == 2) {
System.debug('i is 2');
} else if (i == -3) {
System.debug('i is -3');
} else {
System.debug('default');
}