search
LoginSignup
6

posted at

updated at

VSCode の Java 開発環境にフォーマッターを設定する

はじめに

本記事では Google Java Style をサンプルに、フォーマッターを Visual Studio Code に設定する方法を紹介していきます。

前提

設定方法

1. フォーマッターファイルを用意

Google Java Style のフォーマッターファイルは、https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml に用意されています。こちらを使用します。

2. VSCode の設定を変更

VSCode の設定画面を開きます。GUI の設定画面を使う方法と settings.json を編集する方法の 2 つがありますが、どちらの方法でも構いません。

  • GUI の設定画面:VSCode 画面左下のアクティビティバーの歯車アイコンを選択し、「設定」を選択する。
    メニューバーの「表示」 > 「コマンドパレット」 を赤枠で表示

  • settings.json を編集:VSCode 画面上部のメニューバーの「表示」 > 「コマンドパレット」 を選択し、「Open Settings (JSON)」を選択する。
    コマンドパレットに「Open Settings (JSON)」と入力し、settings.jsonを開く画面

java.format.settings.url にフォーマッターファイルを指定

java.format.settings.urlに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の設定画面

"java.format.settings.profile": "GoogleStyle"

java.format.settings.profile にはフォーマッターのプロファイル名を指定します。フォーマッターファイル内に複数のプロファイル名が含まれる場合には必須です。

前述の URL のフォーマッターにはプロファイル名は 1 つしか存在しませんが、ひとまず指定しています。

3. 設定完了

これで設定が完了しました。java ファイルを開き、フォーマットをしてみましょう。
format-java-file.png
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_linesfalse に変更すると、「改行」を削除せずにフォーマットするようになります。

先ほどの 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にファイルパスを指定

"java.format.settings.url": "eclipse-java-google-style.xml"

自動フォーマット機能を有効化

フォーマットを手動で行うのは手間です。自動的にフォーマットが行われるよう設定しておくと便利でしょう。

前述の方法で settings.json を開き、以下のように記述してください。

{
  // ... 略 ...

  "[java]": {
    "editor.formatOnSave": true,
  },
}

editor.formatOnSavetrue にすることで、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 と記載されている場合、改行は削除せずにフォーマットされます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6