読者です 読者をやめる 読者になる 読者になる

SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



隠れたコーディングスタイルを .rubocop.yml に抽出するツール、Gryをリリースしました!

Ruby

.rubocop.ymlの自動生成ツール Gry をリリースしましたのでお知らせいたします。

github.com

Gry とは?

Gry は RuboCop の設定ファイル(.rubocop.yml)の自動生成ツールです。
Gry を使用することで、プロジェクトのソースコードを解析し、そのプロジェクトに最適な.rubocop.ymlを自動で生成することが可能です。

これにより、従来手作業で行っていた.rubocop.ymlの作成作業にかかる時間を大幅に削減することが可能となります。 そして、RuboCopをよりプロジェクトに沿った形で使用することが可能となります。

インストール

Gry は Gem として提供されているため、以下の様にgemコマンドでインストールを行って下さい。

$ gem install gry

尚、Gry は RuboCop の記事執筆時点での最新バージョン(v0.47.1)に依存しています。 そのためこれより古い RuboCop をお使いの場合は、最適な.rubocop.ymlが生成されない可能性があります。RuboCop のアップデートをお試しください。

使い方

Gry の使用方法は単純で、必要なことは以下の2ステップのみとなります。

  1. .rubocop.ymlを生成したい対象のディレクトリへ移動
  2. gryを実行

実行するとgryは標準出力へ生成した.rubocop.ymlを書き出します。

$ cd your/project/path
$ gry
AllCops:
  TargetRubyVersion: 2.3
Rails:
  Enabled: true

# EnforcedStyle: outdent => 15 offenses
# EnforcedStyle: indent => 0 offense
Style/AccessModifierIndentation:
  EnforcedStyle: indent
  Enabled: true

# EnforcedStyle: with_first_parameter => 12 offenses
# EnforcedStyle: with_fixed_indentation => 2 offenses
Style/AlignParameters:
  EnforcedStyle: with_fixed_indentation
  Enabled: true

# EnforcedStyle: is_a? => 0 offense
# EnforcedStyle: kind_of? => 10 offenses
Style/ClassCheck:
  EnforcedStyle: is_a?
  Enabled: true

# .....

この出力を設定として使用する場合には出力を.rubocop.ymlへと貼り付けるか、gry >> .rubocop.ymlのようにして実行する必要があります。

なお、Gry の実行にはある程度の時間が必要であり、またプロジェクトのコード量が多くなるほどより時間が必要となります。

まとめ

このように、Gry を使用することで.rubocop.ymlを設定する時間を大幅に削減することが出来るでしょう。
いくつかのプロジェクトで実際に Gry を試したところ、20個ほどの Cop の設定を自動で生成することが可能でした。

また、以前弊社でリリースした MeowCop と Gry は直行する概念であるため、合わせてご利用頂くことが可能です。
もしよければ MeowCop のご利用もご検討下さい。
リリース記事: RuboCopを使い始めよう! RuboCop導入に最適な設定、MeowCopをリリースしました! - SideCI Blog