15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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

rubocop-automata

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

https://gyazo.com/520933d9496c3271117d4f8d025db872

install

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

gem 'rubocop-automata'

or

$ gem install rubocop-automata

GitHub Personal access token

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

https://gyazo.com/c949d3821fcc9308694ba950e451651c

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

CircleCI Environment Variables(BUILD SETTINGS)

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

https://gyazo.com/9a8cd90ac2173966cd583524b763b04b

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を作る

https://gyazo.com/e79900ff68c22bba0f6bfab4b258dd73

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

15
14
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
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?