はじめに
新しいプロジェクトを始めるにあたって、他社と協業することになったのですが、
「うちは、開発者が好きなエディタ使ってます」
という話が出てきました。
いろんな開発者がいるからコードの品質を一定にするためにも、
少なくともソースコードのフォーマットは揃えたいですよね。
だからエディタとかも共通のほうがよくないですか?
そうすると
「レビューで指摘します」
と・・・、レビューでそんな本質的なことじゃない部分に、力を割きたくないので、
じゃぁどうやったらフォーマットをそろえられるかな?と考えたのがきっかけで記事にしてみました。
環境
Windows11
Eclipse(最新)
VSCode(最新)
Gradle 8.8
spotless(Gradle用のプラグイン)
Prettierもありかなとは思ったのですが、
どうもEclipse上で動かす良いプラグインが見つからず、
Eclipseのフォーマット設定を、VSCodeおよび、Gradleから実行する方向で考えました。
各種設定
Eclipseでの設定
フォーマッターの設定を、新規から作成する。
その後、編集にてプロジェクトで利用するフォーマットの設定を行ってください。
最後に、編集画面から、エクスポートボタンを押下し、以下のファイル名で保存してください。
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で出来るので、もはやエディタはなんでもいいですね。
おそらくは、制約とかパターンによってはうまくフォーマットできないなど
ありそうな気もしますが、発生したとき考えることにします。