37
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-05-23

はじめに

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

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
  3. You can use dark theme
What you can do with signing up
37
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?