RubocopのそれぞれのCopsにはどんな役割があるのか調べてみた
Railsを使ってるとリンターとして多くのプロジェクトで使われているRubocopで、違反すると出てくるNaming
やStyel
、Layout
といったそれぞれのCopsがどういった役割をしてるのか調べてみました。
Copの種類1
- Style Cops
- Layout Cops
- Lint Cops
- Metrics Cops
- Naming Cops
- Perfomance Cops
- Security Cops
- Rails Cops
- Bundler Cops
それぞれのCopの役割
Style Cops
Style Cops
主にRuby Style Guideに従っているかどうかのチェックを行っているCops。
例)Style/EmptyElse
はelseの後に何もステイトメントがない場合、違反を検知します。
#違反している例
if condition
statement
else
end
#正しい例1
if condition
statement
else
nil
end
#正しい例2
if condition
statement
end
Layout Cops
インテンドやホワイトスペースが一貫して使われているかのチェックをするCops。
例)Layout/IndentationWidth
というCopはインテンドの深さをチェックしている。
#違反している例
class BadExample
def greeting
puts 'hello'
end
end
#正しい例
class GoodExample
def greeting
puts 'hello'
end
end
Lint Cops
曖昧なものや間違いである可能性が高いものをチェックしているCops。
例)Lint/DuplicateMethods
というCopは同じメソッドが複数定義されていないかのチェックをしている
#違反している例
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を自分で作ったことがないため、チェック内容は把握していません。)
参考元
Rubocopの公式ドキュメント
https://docs.rubocop.org/en/latest/
その他
今後、随時更新予定
何か間違いやアドバイスがあれば、ぜひコメントください
-
公式のドキュメントではそれぞれのCopsは複数形で表現されていたので、その表現を使っています。 ↩
Author And Source
この問題について(RubocopのそれぞれのCopsにはどんな役割があるのか調べてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/shin_N/items/133b4bdf6837c6876bf4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .