LoginSignup
8
2

More than 5 years have passed since last update.

RubocopのそれぞれのCopsにはどんな役割があるのか調べてみた

Last updated at Posted at 2018-11-10

Railsを使ってるとリンターとして多くのプロジェクトで使われているRubocopで、違反すると出てくるNamingStyelLayoutといったそれぞれのCopsがどういった役割をしてるのか調べてみました。

Copの種類1

  • Style Cops
  • Layout Cops
  • Lint Cops
  • Metrics Cops
  • Naming Cops
  • Perfomance Cops
  • Security Cops
  • Rails Cops
  • Bundler Cops

それぞれのCopの役割

Style Cops

主にRuby Style Guideに従っているかどうかのチェックを行っているCops。  

例)Style/EmptyElseはelseの後に何もステイトメントがない場合、違反を検知します。

Style/EmptyElse
#違反している例 
if condition
  statement
else
end

#正しい例1
if condition
  statement
else
  nil
end

#正しい例2
if condition
  statement
end

Layout Cops

インテンドやホワイトスペースが一貫して使われているかのチェックをするCops。

例)Layout/IndentationWidthというCopはインテンドの深さをチェックしている。

Layout/IndentationWidth
#違反している例 
class BadExample
 def greeting
 puts 'hello'
 end
end

#正しい例
class GoodExample
  def greeting
    puts 'hello'
  end
end

Lint Cops

曖昧なものや間違いである可能性が高いものをチェックしているCops。

例)Lint/DuplicateMethodsというCopは同じメソッドが複数定義されていないかのチェックをしている

Lint/DuplicateMethods
#違反している例
class BadExample
  def foo
    1
  end

  def foo
    2
  end
end

#正しい例
class GoodExample
  def foo
    1
  end

  def bar
    2
  end
end

Metrics Cops

ソースコードの中で定量化可能なプロパティーを扱うCops。
クラス名の長さ等がこれに該当する。それぞれの許容される最大値は設定で変更することができる。

Naming Cops

その名の通り、メソッド名や定数、ファイル名のコードの名前付けをチェックするCops。セッターなのに、=がついていない。Rubyファイルはスネークケースであるべきなのに、キャメルケースを使ってる場合等に違反を検知する。

Perfomance Cops

ある特定のRubyイディオムにおいて、それと同じ働きをするが、パフォーマンスが良い別のRubyイディオムがある場合、それを検知するCops。

Security Cops

セキュリティー的にまずいコードを検知するCops。ファイルを外から読み込むコード等をチェックする。

Rails Cops

おなじみのフレームワークRuby on Railsのフレームワークの規約を守ってるかをチェックするCops。
他のCopsとは違い、デフォルトでは使えないので、.rubocop.ymlで宣言する必要がある

Bundler Cops

Gemfile内のコードをチェックするCops。
Gemfile内で同じGemが記載されていないか等のチェックをする。

Gemspec Cops

Gemを作る際に作成する必要がある.gemspecファイルの中をチェックする。(Gemを自分で作ったことがないため、チェック内容は把握していません。:sweat_smile:

 参考元

Rubocopの公式ドキュメント
https://docs.rubocop.org/en/latest/

 その他

今後、随時更新予定
何か間違いやアドバイスがあれば、ぜひコメントください:grinning:


  1. 公式のドキュメントではそれぞれのCopsは複数形で表現されていたので、その表現を使っています。 

8
2
1

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