0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rubocopの設定をしてアラートを消す

Posted at

目的

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"

なので、このマジックコメント自体は未だ有効なようです。

とはいえ全ファイルにアラートが出て煩雑なので消します。設定は以下。

.rubocop.yml
Style/FrozenStringLiteralComment:
  Enabled: false

Missing top-level documentation comment for {クラス名}.

クラス定義の1行前にコメントを書け、というアラート。
余計なお世話なので除外します。

.rubocop.yml
Documentation:
  Enabled: false

Method has too many lines. [16/10]

メソッドが長い、10行以内で書くように、というアラート。
確かに長いメソッドは良くないけど無意味に分割しても逆に読みづらいし、せめて任意の行数に制限を変更させてほしいところです。

.rubocop.yml
MethodLength:
  CountComments: true  # ここをfalseにすれば制限自体がなくなる
  Max: 20 # 任意の行数

.rubocop.yml全体

.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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?