はじめに
元々はチームメンバー各々で、IDEにformatの設定をしてformatを行ってました。
githubにpushしたときに自動でformatされたら嬉しいよね。という話になり導入を行ったので、その方法をまとめます。
1.mavenの設定
今回はformatter-maven-pluginを使います。
1.1. pom.xmlにpluginを追記。
<project ...>
...
<plugins>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>2.11.0</version>
</plugin>
</plugins>
...
</project>
設定を行うと、以下のコマンドでformatまたはvalidateを実行することができるようになります。
// formatの実行
mvn formatter:format
// チェック
mvn formatter:validate
1.2. ディレクトリの設定
src/main/java または src/test/java 以外のディレクトリを指定する場合
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>2.11.0</version>
<configuration>
<directories>
<directory>${project.build.sourceDirectory}</directory>
<directory>${project.build.directory}/generated-sources</directory>
</directories>
</configuration>
</plugin>
src/main/java または src/test/java の中でディレクトリやファイルを指定する場合
- includes:対象にしたいディレクトリやファイル
- excludes:対象外にしたいディレクトリやファイル
注:/までちゃんと書くこと
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>2.11.0</version>
<configuration>
<includes>
<include>jp/****/****/****/formatter/</include>
</includes>
<excludes>
<exclude>jp/relativitas/maven/plugins/formatter/special/</exclude>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
</plugin>
1.3. フォーマットファイルの設定
独自のformat設定を行うにはEclipse形式の設定ファイルを指定する必要があります。
おすすめはgoogleが公開しているformatです。
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>2.11.0</version>
<configuration>
<configFile>${project.basedir}/eclipse-java-google-style.xml</configFile>
</configuration>
</plugin>
2. Github Actionsの設定
2.1. YAMLファイルの作成
.github/workflows/
にYAMLファイルを作成します。
実行内容は以下の3つです。
- コードのformat
- format後のチェック
- formatしたコードのcommit
name: auto-format
on:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: format
run: |
mvn formatter:format
mvn formatter:validate
- uses: stefanzweifel/git-auto-commit-action@v3.0.0
with:
commit_message: Formatted code
おわりに
上記の設定を行うと、githubにコードをpushしたタイミングでformatが行われたcommitが作成されます。
これによりローカルでのformat忘れがなくなり、快適にコードレビューを行うことができます。