記事概要
Ruby on RailsのRubocop(Gem)について、まとめる
前提
- Ruby on Railsでアプリケーションを作成している
Rubocopとは
Rubyの静的コード解析ツール
「インデントが揃っていない」「余分な改行・スペースがある」などの指摘を、RubyStyleGuideに基づいて行ってくれる
Gemのインストール手順
Gemfileの記述
手順(設定ファイル)
- ターミナル.appで下記を実行し、設定ファイルを新規作成する
# アプリのディレクトリに移動 % cd ~/[アプリ名] # Rubocopの設定を記述するファイルを新規作成 % touch .rubocop.yml
-
.rubocop.yml
ファイルを修正する.rubocop.ymlAllCops: # 除外するディレクトリ(自動生成されたファイル) # デフォルト設定にある"vendor/**/*"が無効化されないように記述 Exclude: - "vendor/**/*" # rubocop config/default.yml - "db/**/*" - "config/**/*" - "bin/*" - "node_modules/**/*" - "Gemfile" # 1行あたりの文字数をチェックする Layout/LineLength: Max: 130 # 下記ファイルはチェックの対象から外す Exclude: - "Rakefile" - "spec/rails_helper.rb" - "spec/spec_helper.rb" # RSpecは1つのブロックあたりの行数が多くなるため、チェックの除外から外す # ブロック内の行数をチェックする Metrics/BlockLength: Exclude: - "spec/**/*" # Assignment: 変数への代入 # Branch: メソッド呼び出し # Condition: 条件文 # 上記項目をRubocopが計算して基準値を超えると警告を出す(上記頭文字をとって'Abc') Metrics/AbcSize: Max: 50 # メソッドの中身が複雑になっていないか、Rubocopが計算して基準値を超えると警告を出す Metrics/PerceivedComplexity: Max: 8 # 循環的複雑度が高すぎないかをチェック(ifやforなどを1メソッド内で使いすぎている) Metrics/CyclomaticComplexity: Max: 10 # メソッドの行数が多すぎないかをチェック Metrics/MethodLength: Max: 30 # ネストが深すぎないかをチェック(if文のネストもチェック) Metrics/BlockNesting: Max: 5 # クラスの行数をチェック(無効) Metrics/ClassLength: Enabled: false # 空メソッドの場合に、1行のスタイルにしない NG例:def style1; end Style/EmptyMethod: EnforcedStyle: expanded # クラス内にクラスが定義されていないかチェック(無効) Style/ClassAndModuleChildren: Enabled: false # 日本語でのコメントを許可 Style/AsciiComments: Enabled: false # クラスやモジュール定義前に、それらの説明書きがあるかをチェック(無効) Style/Documentation: Enabled: false # %i()構文を使用していないシンボルで構成される配列リテラルをチェック(無効) Style/SymbolArray: Enabled: false # 文字列に値が代入されて変わっていないかチェック(無効) Style/FrozenStringLiteralComment: Enabled: false # メソッドパラメータ名の最小文字数を設定 Naming/MethodParameterName: MinNameLength: 1
手順(実行)
手動修正
- ターミナル.appで下記を実行する
# アプリのディレクトリに移動 % cd ~/[アプリ名] # Rubocopを実行 % bundle exec rubocop
- 結果を確認し、必要に応じてコードを修正する
- 赤色の注意書き
致命的なエラーの可能性があるのでよく確認すること - 黄色の注意書き
致命的なエラーではないので必要に応じて修正すること
※修正しなくてもOK
- 赤色の注意書き
自動修正
- ターミナル.appで下記を実行する
# アプリのディレクトリに移動 % cd ~/[アプリ名] # Rubocopを実行し、check内容を自動修正 % bundle exec rubocop -a
備考
デフォルトの標準設定
標準設定を一部抜粋
Rubocop | 標準設定 | 備考 |
---|---|---|
文字列 | シングルクォーテーション | 式展開や文字列内にシングルクォーテーションがある場合はダブルクォーテーションを使います |
変数名とメソッド名 | スネークケースで定義する |
Ruby on Railsまとめ