はじめに
業務でrubocopを知ったので備忘録を残しておきます
キーワード
ruby, rubocop, lint
目次
- rubocopとは
- rubocopの基本
- 使ってみる
- まとめ
- 参考
rubocopとは
読み方は「るぼこっぷ」らしいです。
rubocopとは、rubyのリントのためのgemです。rubyで書いたコードを予め決められたルールに基づいてチェックしてくれて、主な目的はチーム開発における可読性の向上だと思います。
参考
https://blog.solunita.net/posts/relean-rubocop-options/
基本
公式のgetting started的なのです。
- オプションなし カレントディレクトリの全てのrubyファイルをチェックしてエラーを表示します
$ rubocop
- ‘-l’オプション rubyのコマンドラインオプション - W(大文字)と同じ動きをします
$ rubocop -l
# ruby -W
- ‘-a’ オプション autocorrectの略で、エラー箇所の自動修正を行います。
$ rubocop -a
-
-x
オプション layoutのみに自動修正を行います
$ rubocop -x
# rubocop --fix-layout
他にもオプションはたくさんあります。
一覧はこちらです。
https://docs.rubocop.org/rubocop/1.50/usage/basic_usage.html#command-line-flags
使ってみる
まずrubyの環境が構築されていることは前提です。
私の環境にはなぜか入っていました。
rubyが入っていない方はどこかから落としてみて下さい
https://www.ruby-lang.org/ja/documentation/installation/
rubyの環境が整った方は次のように進めてください
rubocopをインストールします
$ gem install rubocop
テストするコードがないので作ります
# test.rb
print 'hello world'
そして、rubocopと打ってみます
1行書いただけなのに三つも指摘が。
まず一つ目のエラー
Layout/EndOfLine: Carriage return character missing.
改行コードがCRLF(OS依存。winはこれ)になっているため指摘されています。
https://qiita.com/HiMinmeg/items/10b741608cf217aad68c
二つ目のエラー
Style/FrozenStringLiteralComment: Missing frozen string literal comment.
文字列をイミュータブルにするマジックコマンドが書かれていないぞ、と言っています。
冒頭にマジックコマンドを書くと良い気がします
https://qiita.com/YutoYasunaga/items/98111ef50927ecb4135d
三つ目のエラー
Layout/TrailingEmptyLines: Final newline missing.
最後の行に改行が無いと言っています。
改行して三つ目のエラーを消そうとしたらなぜか一つ目のエラーも一緒に消えました。
マジックコメントを追加したら、#の後ろのスペースだとかマジックコメントの次の行は空行に、とか言われたので rubocop -a
を実行したら治りました。すごい。
[correctable]がついているエラーは自動修正が可能なようです。
ぼやき
rubocopを本当に軽く使ってみましたが、1行printするだけでこんなにも警告を出してくれます。丁寧な先輩だと思うことにしています。
次回は.rubocop.yml
や.rubocop_todo.yml
のカスタマイズとreviewdogとの組み合わせ、みたいなことをしたいと思います。
具体的にはこの記事を参考に書きます。
https://zenn.dev/o_ku/articles/1c5b6f1c9eac9a
ではまた。