LoginSignup
12
2

More than 3 years have passed since last update.

【Ruby】コミットする前に husky+lint-staged で、Rubocopの自動整形&チェックを行う

Last updated at Posted at 2019-05-27

この記事なに? :thinking:

上記記事を参考にhusky+lint-stagedを用いて、コミット前にeslintによるチェックを行う実装が行えました。

その仕組みを使って、Rubocopの自動整形&チェックを行う環境を構築できましたので、その手順メモになります。

この記事を一読してくださった方へ

  • 「こんなのも書き留めておいた方が良いよ」
  • 「それ、解釈間違ってるよ」

的なものがあればコメント等いただけると助かります。🙇‍♂️

rubocopのオプション変更 2019.08.05追記

分報仲間のaquiさんから、フィードバックをいただけました!

こちらの記事を参考に、近々記事をアップデートさせていただきたいと思います。

環境

  • macOS
  • Homebrewでインストールしたgityarnを用いる

手順

実際に設定した手順を記載していきます。

準備

必要なGemとnpmパッケージのインストールをします。

# Rubocopのインストール(or Gemfileへrubocopを追記して、bundle installする)
gem install rubocop

# npmパッケージのインストール
yarn add -D lint-staged husky

package.jsonの設定

rb,rakeファイルを対象にRubocopによる自動整形とチェックを行うコマンドを記載します。

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "linters": {
      "*.{rb,rake}": [
        "rubocop -a",
        "rubocop",
        "git add"
      ]
    }
  }
}

bundle installしたRubocopを使用したい場合は、以下コマンドを記載する方が良いかなと思います。(未検証ですが、おそらく問題なく動作するかと思います。)

  • bundle exec rubocop -a
  • bundle exec rubocop

これで、設定完了となります。

注意事項

チーム開発等で本設定を使用されたい場合、必ず最初にyarnして、npmパッケージをインストールするようにしてください。

※npmパッケージをインストールしておかないと、lint-stagedhuskyが動作しないので、注意が必要です。

おわり

CircleCI側で、Rubocopの自動整形をおこなったPRを出してくれるGemもあるみたいです。

自動整形をコミットに含めない運用としたい場合は、上記を活用した方がよさそうです。

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