目的
rubocopのアラートがたくさん出るので、一部のアラートが出ないようにする。
環境
ruby-rubocop0.8.6 VSCodeの拡張機能を利用しています
ruby3.2.1
rails7.0.4
Ruby on Railsは以下のDocker環境で動かしています。
やったこと
プロジェクト直下に.rubocop.yml
を設置して設定を書きました。
以下、アラートごとに除外の設定をしていきます。
Missing frozen string literal comment.
各ファイル冒頭に
# frozen_string_literal: true
というマジックコメントを記載して文字列の破壊的な変更を防ぎましょう!というアラート。
Ruby3から文字列がイミュータブルになるみたいな話があったらしいのですが、Ruby3.2.1現在ミュータブルです!
ドキュメントを参考に以下実験してみましたが確かにミュータブルでした。
a = "string"
b = a
a.upcase! # マジックコメント記載でFrozenError (can't modify frozen String: "string"):
logger.debug(a) # => "STRING"
logger.debug(b) # => "STRING"
なので、このマジックコメント自体は未だ有効なようです。
とはいえ全ファイルにアラートが出て煩雑なので消します。設定は以下。
Style/FrozenStringLiteralComment:
Enabled: false
Missing top-level documentation comment for {クラス名}.
クラス定義の1行前にコメントを書け、というアラート。
余計なお世話なので除外します。
Documentation:
Enabled: false
Method has too many lines. [16/10]
メソッドが長い、10行以内で書くように、というアラート。
確かに長いメソッドは良くないけど無意味に分割しても逆に読みづらいし、せめて任意の行数に制限を変更させてほしいところです。
MethodLength:
CountComments: true # ここをfalseにすれば制限自体がなくなる
Max: 20 # 任意の行数
.rubocop.yml全体
MethodLength:
CountComments: true
Max: 20
Documentation:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
また不要なアラートが出たら追加します!
参考
https://qiita.com/j-sunaga/items/b89c9a8bf5f455779924
https://qiita.com/tbpgr/items/46af4c0f5be30c5c6ccc