Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

rubocopについて

rubocopとは

Rubyの静的コード解析を実行するgem。

(コードの内容を精査するgem)

基本的な使い方

Gemfileに「gem 'rubocop'」を記入。

# ここからターミナルを使う。

bundle install

bundle exec rubocop

関連ファイル

.rubocop.yml

RuboCopの設定ファイルです。対象となるファイルの種類だったり、チェックする構文のデフォルトを変えたりと,自分たちのコーディングスタイルに沿った現実的なルールをこのファイルで適用します。

.rubocop_todo.yml

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

以下の記事を引用。

RuboCop is 何? - Qiita

自分がPFで使用したrubocopの使い方

ここからどのようにして自分がrubocopのエラーをゼロにしたか記載していく。

①rubocop --auto-correct
#このコマンドで自動修正してくれる。(エラーが多すぎる時に使用。)

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

③rubocop.ymlの以下のコードを消す。
inherit_from: .rubocop_todo.yml 
#上記コマンドで自動で記述される

④その後、rubocop.ymlに以下の文を記入。(自分の場合)
# 自動生成されたファイルを対象外にする
AllCops:
  Exclude:
    - 'Gemfile'
    - 'node_modules/**/*'
    - 'bin/*'
    - 'db/**/*'
    - 'config/**/*'
    - 'test/**/*'
    - 'spec/**/*'

# Missing magic comment # frozen_string_literal: true. を無視
Style/FrozenStringLiteralComment:
  Enabled: false

# "Missing top-level class documentation comment."を無効
Style/Documentation:
  Enabled: false

#下記の設定をすることでStyle/ClassAndModuleChildren: Use nested module/class definitions instead of compact style.がなくなる。
Style/ClassAndModuleChildren:
  Enabled: false

# Metrics/AbcSizeのMaxを30に設定。
# これでAssignment Branch Condition size for search is too high.のエラーがなくなる。
Metrics/AbcSize:
  Max: 30

# CountComments を true, Max を 25に設定。
# これでMethod has too many lines.のエラーがなくなる。
MethodLength:
  CountComments: true
  Max: 25

上記をして、rubocopのエラーをゼロにした。

参考

RuboCop導入後の設定カスタマイズ方法 | Enjoy IT Life

【Rails】Rubocopを使ってコーディング規約に準拠させる方法 | vdeep

RuboCopでこんなエラーが出た。Assignment Branch Condition size for search is too high. - Qiita

RuboCop | Style/MethodLength - Qiita

Rubocopを使ってRailsコードをチェックしてみる - さかなソフトブログ

自動調整ツールRubocopの導入と使い方 - Qiita

rubocopの導入[初心者向け] - Qiita