##はじめに
オリアプ制作でRubocopを導入したので、載せておこうと思います。
( Rubocop:静的コード解析ツールのことで、余分なスペースやインシデントが揃っていないなどを指摘・修正してくれるGem )
オリアプのコードは誰かに直接見てもらう事はないので、導入する必要はないかなと思ったのですが、今後使用するかもしれないと思い、導入しました。
##1.Gemの導入・ファイル作成
1.Gemfileにrubocopを記述し、bundle installする。
コードはgroup :development do ~ end 内に記述する。
group development do
#中略
gem 'rubocop', require: false
end
2.rubocopの設定コードを記述するファイル ( .rubocop.yml ) をプロジェクト直下に作成する。
##2.Rubocopの設定
作成した .rubocop.yml に設定用のコードを記述していく。
以下のコードはあくまで一例であり、調べればまだある。
AllCops:
Exclude: # 除外するディレクトリ
- "vendor/**/*"
- "db/**/*"
- "config/**/*"
- "bin/*"
- "node_modules/**/*"
- "Gemfile"
# メソッドの行数が多すぎないかをチェック
Metrics/MethodLength:
Max: 30
# クラスの行数をチェック(無効)
Metrics/ClassLength:
Enabled: false
# ブロック内の行数をチェックする
Metrics/BlockLength:
Exclude: # チェックの対象から除外
- "spec/**/*"
# 下記項目を計算して基準値を超えると警告する(下記頭文字をとって'Abc')
# ・Assignment: 変数への代入 ・Branch: メソッド呼び出し ・Condition: 条件文
Metrics/AbcSize:
Max: 50
# メソッドの中身が複雑になっていないか、計算して基準値を超えると警告する
Metrics/PerceivedComplexity:
Max: 8
# 1行あたりの文字数をチェックする
Layout/LineLength:
Max: 130
Exclude: # チェックの対象から除外
- "Rakefile"
- "spec/rails_helper.rb"
- "spec/spec_helper.rb"
# 循環的複雑度が高すぎないかをチェック(ifやforなどを1メソッド内で使いすぎている)
Metrics/CyclomaticComplexity:
Max: 10
# ネストが深すぎないかをチェック(if文のネストもチェック)
Metrics/BlockNesting:
Max: 5
# メソッドパラメータ名の最小文字数を設定
Naming/MethodParameterName:
MinNameLength: 1
# 日本語でのコメントを許可
Style/AsciiComments:
Enabled: false
# クラス内にクラスが定義されていないかチェック(無効)
Style/ClassAndModuleChildren:
Enabled: false
# 文字列に値が代入されて変わっていないかチェック(無効)
Style/FrozenStringLiteralComment:
Enabled: false
# クラスやモジュール定義前に、それらの説明書きがあるかをチェック(無効)
Style/Documentation:
Enabled: false
# %i()構文を使用していないシンボルで構成される配列リテラルをチェック(無効)
Style/SymbolArray:
Enabled: false
# 空メソッドの場合に、1行のスタイルにしない
Style/EmptyMethod:
EnforcedStyle: expanded
##3.Rubocopの実行
以下のコマンドを実行することでRubocopが余分な箇所などを指摘してくれる。
% bundle exec rubocop
また、以下のコマンドを実行することでRubocopがさきほどの指摘を自動で修正してくれる。
% bundle exec rubocop -a
以上、導入完了!!!
##最後に
rubocopの設定用のコードを覚えるのは無理なので、もし使う機会があれば、この投稿を参考に導入していきたいと思います。
##参考
以下の投稿を参考にさせて頂きました。ありがとうございました。
https://qiita.com/tomohiii/items/1a17018b5a48b8284a8b