コードレビュー補助ツール(RuboCop)
書いてあること
- コードレビューツールとは
1.RuboCop導入
2.RuboCop実行
3.参考ページ
4.終わりに
コードレビューツールとは
コードレビューツールとは、文法・バグ・コーディングスタイルを自動で分析するツールのことを指します。
1.RuboCop導入
RuboCopとは
「インデントが揃っていない」 「無駄な改行・スペースがある」などの指摘をRubyStyleGuideに基づいて行ってくれる。
レビューに掛かる時間が減る。
.rubocop.todo.ymlから違反を消しrubocopを実行 → 修正という流れで進めていく。
導入
Gemfileに下記を追加
#省略
group :development do
#省略
gem 'better_errors'
gem 'binding_of_caller'
gem 'bullet'
gem 'rubocop-rails', require: false⭐︎12/13更新
(#前の書き方 gem 'rubocop', require: false)
end
#省略
書けたら、bundle install
します。
2.RuboCop実行
このまま$bundle exec rubocop
をすると大量の規律違反が出ちゃう٩( ᐛ )و{文法的にはエラーにはならないもののコードの可読性を下げるという理由で設定されてる
けど実際こんなにきっちり直すのは無理なので、チェックルールをカスタムします。
カスタム
設定ファイルは、.rubocop.yml
という名前じゃないとダメなのでGemfileと同じ深さにファイルを作ります
#AllCops:の上に新たに追加##############
require:
- rubocop-rails
####################################
AllCops:
# Rubocopの規約の調査から除外するディレクトリ(自動生成されたファイル)
# デフォルト設定にある"vendor/**/*"が無効化されないように記述
# schemaファイルやmigration関連ファイルについてはほとんど書き直したりすることが無いため見逃す
Exclude:
- bin/*
- db/schema.rb
- node_modules/**/*
- db/migrate/* #migrate以下を追記するかしないかはご自由にどうぞ
- vendor/**/*
#こちらの記述は削除しました###############
# Rails向けのRails copsを実行。"rubocop -R"と同じ
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
この状態でも違反がたくさん出てくる。
現在の違反を徐々に修正
1.現在の違反をすべて記録した上で、いったん違反では無いことにする
2.記録した違反のうち1つを、違反していることに戻す
3.その違反を解消する
1.現在の違反をすべて記録した上で、いったん違反では無いことにする
$bundle exec rubocop --auto-gen-config
.rubocop.todo.yml
ファイルができる
.rubocop.yml
に下記も追記される
inherit_from: .rubocop_todo.yml
.rubocop.ymlに.rubocop.todo.ymlの内容が書かれているのと同じことにしてくれる
2.記録した違反のうち1つを、違反していることに戻す
下記の違反回避記述を削除して
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
#Gemfileのgroup do ~ endのグループの中に書いたGemはアルファベット順に並べる、という規約
警告を復活させる
$bundle exec rubocop
この下の警告が出ないように一部修正いたしました。12/3
詳しくはコメント欄
あれ、エラーが出た
Warning: AllCops does not support Rails parameter.
よくみたら$bundle exec rubocop --auto-gen-config
の時点で出てた。気づかず続行してた。
ロボコップ、Railsサポートしてないって言ってるのでサポートさせる方法を探す。
とりあえず、エラー文をそのままコピペってグーグル先生に聞いてみる。
ターミナルに戻ってきたら、あれ、実行完了してる。
これは、エラーじゃなくて注意喚起だったのかしら。毎回出てました。とりあえず問題なさそうなので進めます。
グーグル先生に聞いた内容のリンクは下記に残しておきます。
Rubocopには、ある程度の規約違反は自動で修正してくれる機能がるので実行
今回のエラーはGemfileのgroup do ~ end
のグループの中に書いたGemはアルファベット順に並べる、
という規約に対しての違反なので、そちらを直します。
実行時に-aオプションを利用
$ bundle exec rubocop -a
並び順がなおりました。
補足
-aオプション
が利用できるかどうかは、.rubocop.todo.yml
の各設定の上
コメントアウトで# Cop supports --auto-correct.
と書かれているかどうかで判断。
書かれていれば、利用することができる。
( ˙-˙ ){すごくたくさん書かれてる規約あった
参考ページ
終わりに
必要なコードレビューツールをまとめて導入したい際は、Siderを活用することで簡単に設定ができるらしいので
次はGitHubへの導入をまとめようと思います。
記載内容に誤りやアドバイスございましたらご指摘いただけたら幸いです。
Author And Source
この問題について(コードレビュー補助ツール(RuboCop)), 我々は、より多くの情報をここで見つけました https://qiita.com/i-to-to-to-mi/items/b0911553d4202d43d9b5著者帰属:元の著者の情報は、元の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 .