13
7

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 3 years have passed since last update.

Rubocopを簡単にまとめてみた

Last updated at Posted at 2020-04-29

Rubocopとは

RuboCop is a Ruby static code analyzer and code formatter. Out of the box it will enforce many of the guidelines outlined in the community

rubocop-hq/rubocop - Git Hub

Rubyの静的コードアナライザーおよびコードフォーマッターです。
デフォルトではRubystyle Guideにもとずき、コード解析を行います。
Rubocopは柔軟性に優れ、設定次第で、様々な解析ツールにカスタマイズできます。

何ができる?

Ruby関連のコードを読み込み、Rubystyle Guideに基づいていない誤った表現の部分を提示します。
また、提示するだけでなく、それを自動修正することができます。

導入

導入方法は一般的なGemと同じです。
$ gem install rubocop

bundlerを利用する場合は下記の記述をGemfileに書き込みます。rubocopは一般的はdevelop環境でしか使わないので、以下のように入れると良いでしょう。

Gemfile
group :development do
  gem 'rubocop', require: false
end

require: falseになっている理由ですが、rubocopはスタンドアローン(外部に依存せずに扱うツール)なのでterminalから操作したいという意味でfalseとします。

また、rubocopは速い速度で開発が進められており、マイナーリリースの場合は下位互換性のない変更もあるため、不要にそのような変更を加えたくない場合は以下のバージョンで保守的にバージョンロックを行うのも一つの手です。

Gemfile
gem 'rubocop', '~> 0.82.0', require: false

bundlerを使っている場合はbundle installを行い、gemをinstallします。

実行

$ bundle exec rubocop

bundlerを使う場合は以上のコマンドで実行します。
その後、解析が始まります。

$ bundle exec rubocop --auto-correct

自動修正を行いたい場合は以上のようなオプションをつけます。

オプション

-a/--auto-correct
自動修正をします

--auto-gen-config
rubocop_todo.ymlを作成し、察知した異常をtodoとしてファイルに書き込みます。

-C/--cache
キャッシュを使い、高速化させます。

-d/--debug
詳細デバッグ情報を出力します

--display-only-fail-level-offenses
指定された--fail-level以上のオフェンスメッセージのみを出力します

--init
現在のディレクトリに.rubocop.ymlファイルを生成します。

-l/--lint
誤りである可能性が高い部分やbad practiceを指摘するCopのみを実行します。

-x/--fix-layout
Layoutのみを対象として自動修正を実行します。

関連ファイル

.rubocop.yml

このファイルで、詳細なcopの設定を行います。
https://docs.rubocop.org/en/stable/cops/
に詳しく設定することができるcopのリストが載っています

.rubocop_todo.yml

--auto-gen-configを実行した際にTodoが追加されるファイルです。

拡張

gem 'rubocop-rspec', require: false
gem 'pre-commit', require: false

この二つがおすすめです。一つ目はrspecに対してコード解析をするGemです。
もう一つはGitにcommitした際に自動的にrubocopを走らせるGemです。
以下の記事を見てcommit時の自動化を設定しました。
rubocopをコミット時に自動で走らせる & 出来る限り自動で修正する

参考リンク

GitHub
https://github.com/rubocop-hq/rubocop
RuboCop公式
https://docs.rubocop.org/en/stable/
RuboCopをRailsオプションやLintオプションで使ってみよう
https://blog-ja.sideci.com/entry/2015/03/12/160441

13
7
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
13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?