先日RailsプロジェクトにRuboCopを導入しましたが、設定が沢山あり、何を書いたらいいか分からなかったので、私の設定について紹介したいと思います。
対象読者は、初めてRuboCopを導入する方です。
RuboCopとは
RuboCopとは、静的コード解析ツールの一つで、コードがコーディング規約に則り書かれているかをチェックすることができます。
RuboCopの導入方法については省略します。
RuboCop設定の記述方法
そもそもRuboCopの設定については、最初に書かなければいけないわけではなく、コードチェックを一度実行してみて、個人、又はチームのコーディング規約と合っていない部分のみ設定に記述すれば良いと思います。
.rubocop.yml
require:
- rubocop-rails
- rubocop-performance
AllCops:
TargetRubyVersion: 2.7.1
TargetRailsVersion: 6.0.3.3
Exclude:
- "node_modules/**/*"
- "tmp/**/*"
- "vendor/**/*"
- ".git/**/*"
- "config/**/*"
- "app/channels/**/*"
- "app/mailers/*"
- "db/migrate/*"
- "bin/*"
- "db/schema.rb"
- "spec/rails_helper.rb"
- "spec/spec_helper.rb"
- "Gemfile"
- "Rakefile"
- "config.ru"
Rails:
Enabled: true
# デフォルトをダブルクォーテーションに設定
Style/StringLiterals:
EnforcedStyle: double_quotes
# 日本語のコメントを許可
Style/AsciiComments:
Enabled: false
# classの説明コメントは不要
Style/Documentation:
Enabled: false
# フローズンリテラルコメントは不要
Style/FrozenStringLiteralComment:
Enabled: false
解説
今回導入しているgemは、以下の3つです。
- rubocop
- rubocop-performance
- rubocop-rails
require: rubocop-performance
gem rubocop-performanceを導入している際に必要な記述です。
require: rubocop-rails
gem rubocop-railsを導入している際に必要な記述です。
AllCops: TargetRubyVersion:
使用しているRubyのバージョンを指定します。
AllCops: TargetRailsVersion:
使用しているRailsのバージョンを指定します。
AllCops: Exclide:
コードチェックを行わないファイルを指定します。
自動生成されるファイルや、殆ど変更することのないファイルはここに指定しておくと無駄にエラーが出力されなくて済みます。
Rails: Enabled: true
gem rubocop-railsを導入している際はtrueにします。
Style/StringLiterals:
文字列リテラルの指定です。私は文字列リテラルは基本的にダブルクオートを使用するようにしていますが、RuboCopでは式展開がない場合は、シングルクオートをデフォルトとしています。
ダブルクオートを使用する場合は、EnforcedStyle: double_quotesを指定します。
Style/AsciiComments:
デフォルトではコード内のコメントを日本語で書くことは推奨されていません。
しかし、今の所自分しかコードを読まないので、日本語でのコメント記述を許可するため、Enabled: falseを指定します。
Enabled: falseは、この項目自体チェックを行わないという事です。
Style/Documentation:
これは class hogeというクラスの定義の前にクラスについて説明する為のコメントを書きなさいという項目ですが、全てのクラスにコメントを書いていられないので、falseに設定しました。
Style/FrozenStringLiteralComment:
フローズンリテラルコメントとは、# frozen_string_literal: true というコメントを記載する事によってファイル内の文字列をイミュータブルにする為のものです。
今回の開発では必要ないと判断し、falseに設定しました。
コードを読みやすく、保守しやすいものとするため、適度に設定する事を心がけたいものです。