1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

好きなエディタを使いたいじゃないですか。

Last updated at Posted at 2024-10-16

はじめに

新しいプロジェクトを始めるにあたって、他社と協業することになったのですが、

「うちは、開発者が好きなエディタ使ってます」

という話が出てきました。
いろんな開発者がいるからコードの品質を一定にするためにも、
少なくともソースコードのフォーマットは揃えたいですよね。
だからエディタとかも共通のほうがよくないですか?
そうすると

「レビューで指摘します」

と・・・、レビューでそんな本質的なことじゃない部分に、力を割きたくないので、
じゃぁどうやったらフォーマットをそろえられるかな?と考えたのがきっかけで記事にしてみました。

環境

Windows11
Eclipse(最新)
VSCode(最新)
Gradle 8.8
spotless(Gradle用のプラグイン)

Prettierもありかなとは思ったのですが、
どうもEclipse上で動かす良いプラグインが見つからず、
Eclipseのフォーマット設定を、VSCodeおよび、Gradleから実行する方向で考えました。

各種設定

Eclipseでの設定

image.png

フォーマッターの設定を、新規から作成する。
その後、編集にてプロジェクトで利用するフォーマットの設定を行ってください。
最後に、編集画面から、エクスポートボタンを押下し、以下のファイル名で保存してください。

image.png

config/formatter.xml

VSCodeでの設定

./vscode/settings.json に、以下の記述を追記してください。
ただ、インデントスペースの数を設定しても、4以外には設定できませんでした。
おそらく適用されるものと、適用されないものがあるのだろうと推測されますので、実際に試してみてください。

{
    "editor.detectIndentation": false,
    "[java]": {
        "editor.defaultFormatter": "redhat.java"
    },
    "java.format.settings.url": "./config/formatter.xml",
    "java.format.settings.profile": "MyProject"
}

Gradleでの設定

build.gradleを以下の通りに編集します。

まずはspotlessを使えるようにプラグインを追加

plugins {
	id 'war'
	id 'com.diffplug.spotless' version '6.25.0'
}

次に、spotlessの設定を行います。Eclipseのフォーマット設定を読み込むようにします。

spotless {
    java {
        // Eclipseのフォーマッタ設定ファイルを指定
        eclipse().configFile("config/formatter.xml")  // 相対パスでEclipseの設定ファイルを指定
    }
}

ここまでできたらあとは実行するだけです。
フォーマットを実行します。

./gradlew spotlessApply

フォーマットが設定に準拠しているかをチェックします。

./gradlew spotlessCheck

最後に

いろいろと方法を考えながら時間がかかりましたが実際に試してみたところ
1時間程度でここまでできました。
Gradleで出来るので、もはやエディタはなんでもいいですね。

おそらくは、制約とかパターンによってはうまくフォーマットできないなど
ありそうな気もしますが、発生したとき考えることにします。

1
0
2

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?