rubocop / rubocop-jp

A place for RuboCop discussions in Japanese
55 stars 2 forks source link

Style/StructInheritance の修正で直前行がコメントの場合まずいことになる #61

Closed nabetani closed 4 years ago

nabetani commented 4 years ago

環境

$ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin19]
$ rubocop -v
0.88.0

入力

# hoge
class Hoge < Struct.new(:foo, :bar)
  def fuga
    :piyo
  end
end

実行

$ rubocop -a hoge.rb
Inspecting 1 file
E

Offenses:

hoge.rb:2:14: C: [Corrected] Style/StructInheritance: Don't extend an instance initialized by Struct.new. Use a block to customize the struct.
class Hoge < Struct.new(:foo, :bar)
             ^^^^^^^^^^^^^^^^^^^^^^
hoge.rb:5:1: E: Lint/Syntax: unexpected token kEND
(Using Ruby 2.4 parser; configure using TargetRubyVersion parameter, under AllCops)
end
^^^

1 file inspected, 2 offenses detected, 1 offense corrected

結果

# hogeHoge = Struct.new(:foo, :bar) do
  def fuga
    :piyo
  end
end

補足

Hoge = Struct.new(:foo, :bar) do の前に改行が必要ですが、改行コードがないので Hoge = Struct.new(:foo, :bar) do がコメントの一部になってしまいます。

koic commented 4 years ago

鍋谷さん、フィードバックありがとうございます!https://github.com/rubocop-hq/rubocop/pull/8443 として PR を開きました。

koic commented 4 years ago

次のリリースとなる RuboCop 0.89 で修正が取り込まれる予定です。イシューとしてクローズします。