目次
- 概要
- 導入方法
- ファイルの作成・記載
- 指摘事項
- 総括
- 参考記事
概要
Rubocopとはコード解析・検査をしてくれるGemです。具体的にはコードに対して、一行が長いよ、endがないよといったことをあるルールに則り指摘(任せれば修正も)してくれます。
今回使用するRubocop-airbnbはデフォルトのルールではなく、Airbnb社が決めたルールで解析してくれるGemです。
Githubはこちら
尚、今回、私自身がPF制作を終えて、ある一定のルールの下、コーディング出来たのかということを確認するために導入しました。
そのためGemに任せた修正は行わず、一つ一つ内容を確認しました。
導入方法
group :development, :test do
gem 'rubocop-airbnb'
bundle installしましょう。
ファイルの作成・記載
アプリのフォルダ直下に.rubocop.ymlと.rubocop_airbnb.ymlを作成します。
/アプリ名/.rubocop.yml
/アプリ名/.rubocop_airbnb.yml
になっていればOKです。
inherit_from:
- .rubocop_airbnb.yml
# 解析から除外するファイルやフォルダを指定します。
# ご自身に合わせて加除修正を行ってください。
AllCops:
Exclude:
- 'db/**/*'
- 'bin/*'
- 'config/environments/*'
- 'config/application.rb'
- 'config/initializers/*'
- 'config/spring.rb'
- 'lib/tasks/*'
- 'vendor/**/*'
- 'path/ruby'
- 'test/**/*'
- 'spec/**/*'
- 'config/**/*'
require:
- rubocop-airbnb
これで記載完了です。
$ bundle exec rubocop --require rubocop-airbnb
で検査できます。
指摘事項
約80か所の指摘がありましたがインデント、改行がメインでした。
文言通りに確認していくとすぐに解決することができますが、
パッと見て理解できなかったもの、解決に至らなかったものをご紹介したいと思います。
Freeze mutable objects assigned to constants.
参考
正規表現のバリデーションをかけた箇所への指摘。
定数を書き換えられないようにfreezeメソッドで固定せよとのこと。
/[ァ-ヴ]/.freeze
こちらで解決
Inconsistent indentation detected.
一貫性のないインデントを検出したとのこと。不審な点が見当たらず未解決。
Use 2 (not 0) spaces for indentation. def index
類似事例を参考にするも未解決。
総括
企業やアプリケーション毎にコーディングルールがあり、それに準じて記載していく必要があるということは分かっていました。
自分なりにルールを設けて記載していたつもりでしたが、表記ゆれが確認できてしまいました。(Airbnb社とのルール差はともかく。)
この点は反省し、今後一層コーディングルールの順守を心がけていこうと思います。
参考
https://qiita.com/yokoyan/items/76e6b330a6b9d908d6fb
https://qiita.com/tomohiii/items/1a17018b5a48b8284a8b
https://qiita.com/ki_87/items/c09f2c7b924669bb9600