2
4

More than 3 years have passed since last update.

maven-formatterを使ってformatを自動化

Last updated at Posted at 2020-06-08

はじめに

元々はチームメンバー各々で、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忘れがなくなり、快適にコードレビューを行うことができます。

2
4
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
2
4