RuboCop | Style/RaiseArgs
概要
RuboCopの「Style/RaiseArgs」警告について。
raise使用時に、下記のうちのどちらを使用しているかチェックする。
raise Exception.new(msg)
raise Exception, msg
デフォルトは後者。
設定値一覧
| 設定対象 | 対象 | 内容 | デフォルト | 
|---|---|---|---|
| RaiseArgs | compact | raise Exception.new(msg)形式を有効とする | -- | 
| RaiseArgs | exploded | raise Exception, msg形式を有効とする | ○ | 
RaiseArgs
各設定値での検証結果をまとめます。
検証プログラム
raise_args
def fail_method
  fail StandardError, 'fail'
end
def raise_method_exploded
  fail_method
rescue
  raise StandardError, 'raise'
end
def raise_method_compact
  fail_method
rescue
  raise StandardError.new('raise')
end
begin
  raise_method_exploded
rescue => e
  puts e
end
begin
  raise_method_compact
rescue => e
  puts e
end
実行結果 デフォルト の場合
.rubocop.yml
RaiseArgs:
  EnforcedStyle: exploded
$rubocop raise_args.rb
Inspecting 1 file
C
Offenses:
raise_args.rb:14:3: C: Provide an exception class and message as arguments to raise.
  raise StandardError.new('raise')
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1 file inspected, 1 offense detected
実行結果 compact を設定にします
.rubocop.yml
RaiseArgs:
  EnforcedStyle: compact
$rubocop raise_args.rb
Inspecting 1 file
C
Offenses:
raise_args.rb:2:3: C: Provide an exception object as an argument to fail.
  fail StandardError, 'fail'
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
raise_args.rb:8:3: C: Provide an exception object as an argument to raise.
  raise StandardError, 'raise'
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1 file inspected, 2 offenses detected
RuboCopまとめ記事