1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】Rubocop(Gem)について

Posted at

記事概要

Ruby on RailsのRubocop(Gem)について、まとめる

前提

  • Ruby on Railsでアプリケーションを作成している

Rubocopとは

Rubyの静的コード解析ツール
「インデントが揃っていない」「余分な改行・スペースがある」などの指摘を、RubyStyleGuideに基づいて行ってくれる

Gemのインストール手順

Gemfileの記述

手順(設定ファイル)

  1. ターミナル.appで下記を実行し、設定ファイルを新規作成する
    # アプリのディレクトリに移動
    % cd ~/[アプリ名]
    
    # Rubocopの設定を記述するファイルを新規作成
    % touch .rubocop.yml
    
  2. .rubocop.ymlファイルを修正する
    .rubocop.yml
    AllCops:
    # 除外するディレクトリ(自動生成されたファイル)
    # デフォルト設定にある"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
    

手順(実行)

手動修正

  1. ターミナル.appで下記を実行する
    # アプリのディレクトリに移動
    % cd ~/[アプリ名]
    
    # Rubocopを実行
    % bundle exec rubocop
    
  2. 結果を確認し、必要に応じてコードを修正する
    • 赤色の注意書き
      致命的なエラーの可能性があるのでよく確認すること
    • 黄色の注意書き
      致命的なエラーではないので必要に応じて修正すること
      ※修正しなくてもOK

自動修正

  1. ターミナル.appで下記を実行する
    # アプリのディレクトリに移動
    % cd ~/[アプリ名]
    
    # Rubocopを実行し、check内容を自動修正
    % bundle exec rubocop -a
    

備考

デフォルトの標準設定

標準設定を一部抜粋

Rubocop 標準設定 備考
文字列 シングルクォーテーション 式展開や文字列内にシングルクォーテーションがある場合はダブルクォーテーションを使います
変数名とメソッド名 スネークケースで定義する

Ruby on Railsまとめ

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?