はじめに
本記事では Google Java Style をサンプルに、フォーマッターを Visual Studio Code に設定する方法を紹介していきます。
前提
- 拡張機能 Japanese Language Pack for Visual Studio Code がインストールされていること。
- 拡張機能 Java Extension Pack がインストールされていること。
設定方法
1. フォーマッターファイルを用意
Google Java Style のフォーマッターファイルは、https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml に用意されています。こちらを使用します。
2. VSCode の設定を変更
VSCode の設定画面を開きます。GUI の設定画面を使う方法と settings.json を編集する方法の 2 つがありますが、どちらの方法でも構いません。
java.format.settings.url にフォーマッターファイルを指定
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml"
java.format.settings.url
にはフォーマッターの URL またはローカル上にあるフォーマッターのファイルパスを指定します。ここでは前述のフォーマッターの URL を指定しています。
java.format.settings.profile にプロファイル名を指定
"java.format.settings.profile": "GoogleStyle"
java.format.settings.profile
にはフォーマッターのプロファイル名を指定します。フォーマッターファイル内に複数のプロファイル名が含まれる場合には必須です。
前述の URL のフォーマッターにはプロファイル名は 1 つしか存在しませんが、ひとまず指定しています。
3. 設定完了
これで設定が完了しました。java ファイルを開き、フォーマットをしてみましょう。
VSCode 上で右クリックし、「ドキュメントのフォーマット」を選択します。すると、開いている java ファイルのコードが Google Java Style でフォーマットされます。
設定のカスタマイズ
ここからはフォーマッターと VSCode の設定の変更方法を紹介していきます。
フォーマッターファイルをカスタマイズ
ローカル上にフォーマッターファイルを作成
Google Java Style のフォーマッターファイルはネット上にあるため、このままでは設定内容の編集ができません。
https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml の内容をコピペし、フォーマッターファイルをローカル上に作成しましょう。
フォーマッターのファイル名は eclipse-java-google-style.xml
としておきます。もちろん他の名前で作成しても構いません。
フォーマッターの設定値を変更
Google Java Style はそのままでも十分良いかと思いますが、それでも一部の設定値を変更したいと思う場面もあるでしょう。
例えば以下のように Builder クラスを使用したコードの場合、フォーマットすると以下のようになります。
public class MyClass {
public static void main(String[] args) {
User user = new User.Builder().setId("00000001").setName("user").setUserPrincipalName("user")
.setMail("user@sample.com").setLocation("Japan").build();
System.out.println(user);
}
}
このままでは少々読みにくいかもしれません。フォーマッターファイルの設定値を以下のように変更しましょう。
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
org.eclipse.jdt.core.formatter.join_wrapped_lines
を false
に変更すると、「改行」を削除せずにフォーマットするようになります。
先ほどの Builder クラスの setXxxx メソッドの前にある .(コロン)の前に改行を挿入し、その後にフォーマットしてみましょう。すると、以下のようになります。
public class MyClass {
public static void main(String[] args) {
User user = new User.Builder()
.setId("00000001")
.setName("user")
.setUserPrincipalName("user")
.setMail("user@sample.com")
.setLocation("Japan")
.build();
System.out.println(user);
}
手動で挿入した改行が削除されずに残っていることが分かります。
VSCode の設定をカスタマイズ
java.format.settings.url を修正
java.format.settings.url
の値を URL から、先に作成したフォーマッターファイルのファイルパスに変更します。
"java.format.settings.url": "eclipse-java-google-style.xml"
自動フォーマット機能を有効化
フォーマットを手動で行うのは手間です。自動的にフォーマットが行われるよう設定しておくと便利でしょう。
前述の方法で settings.json を開き、以下のように記述してください。
{
// ... 略 ...
"[java]": {
"editor.formatOnSave": true,
},
}
editor.formatOnSave
を true
にすることで、java ファイル保存時に自動的にフォーマットされるようになります。
あわせて、 editor.formatOnPaste
(コード貼り付け時に自動フォーマット) と editor.formatOnType
(コード入力中に自動フォーマット) も有効化しておくと良いでしょう。
なお、最終的に settings.json の内容は以下のようになります。
{
// ... 略 ...
"java.format.settings.profile": "GoogleStyle",
"java.format.settings.url": "eclipse-java-google-style.xml",
"[java]": {
"editor.formatOnPaste": true,
"editor.formatOnSave": true,
"editor.formatOnType": true,
},
}
参考
備考
- この記事では Google Java Style を例にしていますが、他のコードスタイルを適用したい場合には、そのフォーマッターファイルを用意してください。
-
java.format.settings.url
のデフォルト値は空です。そして値が空の場合、VSCode 上で開いているワークスペース内の.settings/org.eclipse.jdt.core.prefs
がフォーマッターとして指定されます。例えばこのファイル内にorg.eclipse.jdt.core.formatter.join_wrapped_lines=true
と記載されている場合、改行は削除せずにフォーマットされます。