rubocop --auto-correctの補正結果を自動でPRにする


rubocopは構文解析ツールです。
例えばrubyでString型を定義するときは、シングルクォートを使うようにするのが標準的な規約なので、rubocopは違反した部分のコードを教えてくれます。
ただシングルクォートになっていないといった簡単に修正できるものは、教えてくれるよりも修正してくれるほうが便利なので--auto-correctオプションを付けて自動補正するのが便利です。

今日は、CircleCIでrubocop --auto-correctを実行して、補正した差分をPull Requestにしてくれるgemを公開したので紹介します。

rubocop-automata

rubocop-automataは、CircleCIでrubocop --auto-correctを実行してその補正結果をPull Requestにしてくれます。

install

Gemfileに追加してbundle installまたは、gem installします。

gem 'rubocop-automata'

or

$ gem install rubocop-automata

GitHub Personal access token

CircleCIからPull Requestを作れるようにPersonal access tokenを発行します。

Generate tokenボタンを押したあとのaccess tokenをクリップボードにコピーします。

CircleCI Environment Variables(BUILD SETTINGS)

[BUILD SETTINGS] -> [Environment Variables] -> [Add Variable]でGITHUB_ACCESS_TOKENをキーにaccess tokenを登録します。

CircleCI Configuration

GitHubに登録してあるアカウントのemailとusernameを引数にして、rubocop-automataコマンドを実行します。

version: 2

jobs:
  build:
    working_directory: /usr/src/app
    docker:
      - image: ruby:2.4.2-alpine3.6
    steps:
      - checkout
      - run: apk --update --upgrade add --no-cache git openssh curl
      - run: bundle install -j4 --retry=3
      - rubocop-automata <github email> <github username>

補正結果からPull Requestを作る

まずは、CircleCIで構文解析して自動補正した結果をPull Requestできるgemを作りました。
今後は別のCIサービスでも利用しやすいようにしたり、検証対象のコードをコミット範囲に絞れるようにしたいと思っています。