[Rails]初学者によるRubocopの導入
はじめに
Rubocopとは、Rubyの静的コード解析ツール。
ruby-style-guide
に従って、ソースコードの修正・改善点を指摘してくれます。
また、インデントのずれや、不必要なスペース・改行などは特定のコマンドを打つことで自動で修正してくれるので、自分にとってはもちろん、他の人が見ても読みやすいコードに整形することが出来ます。
※あくまで初学者の観点で設定等を決めています。
導入
gemfile
gem 'rubocop', require: false
ターミナル
bundle install
使ってみる
ターミナル
bundle exec rubocop
gem 'rubocop', require: false
bundle install
bundle exec rubocop
これらがRubocopが検知した修正点になります。
しかし、デフォルトのルール全てに従っていると、コードを書く際に気を配る点があまりにも増えてしまうので、自分やチーム内で許容するルールを設定することが出来ます。
設定をカスタマイズする
アプリケーションのディレクトリに
.rubocop.yml というファイルを作成し、その中に設定を記述します。
AllCops:
# 除外するディレクトリを設定。例えばschemaやmigrationファイルなどは書き直すことが少ないため、検知対象外に
Exclude:
- bin/*
- db/schema.rb
- node_modules/**/*
- db/migrate/*
- vendor/**/*
# Rails向けのチェックを行う
Rails:
enabled: true
# "Missing top-level class documentation comment."を無効
Style/Documentation:
Enabled: false
# "Prefer single-quoted strings when you don't need string interpolation or special symbols."を無効
Style/StringLiterals:
Enabled: false
# "Line is too long"を無効
Metrics/LineLength:
Enabled: false
#'frozen_string_literal: true'を無効
Style/FrozenStringLiteralComment:
Enabled: false
など様々な設定が可能です。
デフォルトの設定を参考にいろいろいじってみようと思います。
設定後、もう一度
bundle exec rubocop
すると、72filesが56filesと、先ほどよりも修正点が減っていることがわかります。
修正する
ターミナル
bundle exec rubocop --auto-gen-config
bundle exec rubocop --auto-gen-config
.rubocop.todo.yml というファイルが自動生成されます。
これにより、一時的に修正点を全て無効とみなされます。
ここでrubocopを実行すると、修正点がない状態になります。
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
一例として、上記のような記述があります。
この記述を削除すると、該当部分の無効化していた修正点が復活します。
早速修正して行きますが、
Cop supports --auto-correct.
という記述がある場合、Rubocopが以下のコマンドで自動で修正してくれます。
bundle exec rubocop -a
今回修正したのは、Gemfileのgemの記述がアルファベット順になっていないのを正しい順番に並べ替えました。
まとめ
1.gemを導入し、.rubocop.yml
に設定をカスタマイズする
2.bundle exec rubocop --auto-gen-config
を実行し、
.rubocop.todo.yml
を生成する。
3..rubocop.todo.yml
に書かれている記述を1つ消し、修正する
4.3.を繰り返す。
実際の現場では、自動化されていてあまり自分で修正することはなさそうですが、
まだまだ初学者ですので、一つ一つ改善していって規約を確認し、
初めから読みやすいコードを書けるエンジニアになれるよう心がけます。
Author And Source
この問題について([Rails]初学者によるRubocopの導入), 我々は、より多くの情報をここで見つけました https://qiita.com/yoshino0331/items/2baecaebccc4ccb37d9e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .