💨

rubocopを設定する

2022/06/27に公開

Rubyの静的コード解析ツール(コーディングチェックツール)」の1つであるrubocopをセットアップし、Github Actionsでmasterブランチにマージされるたびにrubocopが走るまでの環境構築をしていきます

rubocopをセットアップする

  1. rubocopのgemをインストールする
Gemfile
gem 'rubocop', require: false
  1. rubocop -Aコマンドを実行する

  2. rubocopの設定を編集する
    .rubocop.ymlファイルを作成して、rubocopの設定を編集します

.rubocop.yml
AllCops:
  NewCops: enable

Style/Documentation:
  Enabled: false

AllCopsでRubyのバージョンを指定します
今回はclassのドキュメント(コメント)を必須にする設定をoffにしました

1行の警告を無効化したい場合

# メソッド名が長すぎるというエラーを無効化
def handle_error_in_development(e) # rubocop:disable Naming/MethodParameterName

これだけでrubocopの設定は完了です

次にciを設定しましょう

rubocopをGithub Actionsで事項する方法

ciにはreviewdog/action-rubocopを使用します
reviewdog/action-rubocopはrubocopの結果をpull requestでコメントしてくれる便利なGithub Actionです

ドキュメントを参考にGithub Actionsを設定します

.github/workflows/rubocop.yml
name: reviewdog
on: [pull_request]
permissions:
  contents: read
  pull-requests: write
jobs:
  rubocop:
    name: runner /rubocop
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v3
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.1.2
      - name: rubocop
        uses: reviewdog/action-rubocop@v2
        with:
          rubocop_version: gemfile
          rubocop_extensions: rubocop-rails:gemfile
          github_token: ${{ secrets.github_token }}
          reporter: github-pr-review

注意するポイントは1つだけで、github_token: ${{ secrets.github_token }}の部分です
secrets.github_tokenはciを実行するとGithub側が自動で作ってくれるので、自分たちで特別secretsを設定する必要はありません

ここまで準備ができてからpull_requestを作成するとciが走って、rubocopに違反したコードがあると画像のようにコメントで伝えてくれます
https://github.com/nozomi-iida/zenhub_task_manager/pull/1

rubocopを使ってコードの保守性をあげていきましょう!

GitHubで編集を提案

Discussion