359
314

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RuboCop is 何?

Last updated at Posted at 2018-10-07

RuboCopとは

Rubyの静的コード解析を実行するgemです。難しく聞こえますが、要はRuboCopが.rbファイルに記述してあるコードを検査し、ここのコードは長すぎるね。とか、インデント入れたほうがいいよ。とかメソッド名変えようか。とかをコマンド1つでターミナルに吐き出しててくれます。(HTML、CSS、またはそれらの中の埋め込みrubyは解析してくれません。)

ただ、RuboCopの警告全てが正しい訳ではなく、どちらかと言うとこうした方が良いよ的なものが多いので、厳しすぎるんじゃないかと思ったらデフォルトを変えたり、警告する/しないの設定をしてみてください。なので、プロジェクトごとに話し合って使い分けれればいいかなと思ってます。

RuboCopの基本

###・ 準備

Gmefile
group :development do
  gem 'rubocop', require: false
end
# or
$ gem install rubocop

###・ 関連ファイル

.rubocop.yml
RuboCopの設定ファイルです。対象となるファイルの種類だったり、チェックする構文のデフォルトを変えたりと,自分たちのコーディングスタイルに沿った現実的なルールをこのファイルで適用します。(RuboCopの設定アレコレに詳しく書いてあるので参考にしてみてください。)

.rubocop_todo.yml
あまりに警告が多い時に**$ rubocop --auto-gen-config**を実行することによって自動生成され、警告内容を全てこのファイルに一旦退避することができます。それ以降は退避された警告は無視されます。(git stashみたいな感じ?)

###・ 基本コマンド


$ rubocop
# 解析して結果をターミナルに吐き出す。

$ rubocop --help
# ヘルプを参照できます。

$ rubocop --lint( または rubocop --rails )
# チェック規則は以下の4つに分類されますが --lint がLintのみチェック、 --rails がRailsのみチェック
# -------------------------------------------------------------------------
# 1 Style   (スタイルについて)
# 2 Lint    (誤りである可能性が高い部分やbad practiceを指摘する)
# 3 Metrics (クラスの行数や1行の文字数などに関して)
# 4 Rails   (Rails特有のcop)

$ rubocop --auto-gen-config 
# .rubocop_todo.ymlに警告を一旦退避する。
# .rubocop.ymlに "inherit_from: .rubocop_todo.yml" と書くのを忘れないでください。

$ rubocop --auto-correct 
# 直せる箇所を自動で修正してくれます。(最初は使わないで警告されたコードを眺めてみることをお勧めします。)

警告内容

警告の種類はたくさんありますが、Rubocopチートシートにしっかりとまとまっています。参考にしてみてください。

修正の流れ ⓪〜⑦

⓪ $ rubocop --auto-correctを実行して、自動で修正できるものはしてもらう。残りの警告がたくさんある場合は①へ。警告がそんなに多くない場合(10~20個とか)は③と④を繰り返す。
(Railsのコード規則を学ぶのにとても良い教材だと思うので初めは⓪を飛ばすことをお勧めします。)

① 警告がたくさんあると見ずらいので**$ rubocop --auto-gen-configを実行し、.rubocop_todo.ymlを作成し、そこに全ての警告をいったん移す。(こうすることで$ rubocop**を実行しても今の段階では全ての警告は無視されます。)

② .rubocop_todo.yml内の警告の中から一番上の警告をコメントアウトする。(コメントアウトした警告だけが再びRuboCopに感知されるようになる)

③ $ rubocopを実行して警告を修正する。

④ 警告のデフォルトを変更したり、特定のファイルを今後RuboCopに警告されないたくないという場合は, .rubocop.ymlに設定を書く。

⑤ 修正し終わったら.rubocop_todo.ymlに戻り、コメントアウトした警告を削除する。

⑥ .rubocop_todo.yml内全ての警告を修正し終わるまで②~⑤を繰り返す。

⑦ テストがある場合はテストを走らせる。

RuboCopの存在いつも忘れる問題

RuboCopは便利ですが、いつも実行し忘れしまい警告がたまってしまいます。

後々大量の警告を一度に修正するのは面倒なので、git commit実行時に自動でコーディングチェックしてもらいましょう。
きゃまなかのブログさんの【Ruby on Rails】rubocop と pre-commit を利用して git commit 時にコーディングチェックを行うに詳しいやり方が書いてあります。

ありがとう、Rubocop

RuboCopは、日本語のコメントはダメだとか、1行にかける文字がかなり短かったりだとかいちいち厳しいですが、愛のあるlintツールです。なので、早く自分のコーディングスタイルを確立し、理想の.rubocop.ymlを作り上げていきましょう。他の方が自分の.rubocop.ymlを公開しているので参考にしてみてください。(僕の使っている .rubocop.yml · GitHub)
image.png

最後に

こんなお悩みありませんか?
・会社や学校に通いながら学びたい...
・対面でプログラミングについて相談したい…
・値段が高過ぎて通えない…

そんなあなたに「Pikawakaクラス」
・良心的でリーズナブルな価格
・安心の少人数制
・渋谷からスグの良アクセス
働きながら、効率的にプログラミングスキルを身につけて 即戦力に!今なら20名様限定!10万円相当の入学金が無料!

2024年6月から第3期生募集中!

まずは無料相談へ
「入会してみたいけど、ついていけるか不安」「どんなキャリアを描けば良いんだろう…」
そんな方の相談を受け付けております。
https://pikawaka.com/lp

359
314
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
359
314

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?