RuboCop 0.52.0 のCHANGELOGを読む
RuboCop のバージョン 0.52.0 がリリースされました。
https://github.com/bbatsov/rubocop/releases/tag/v0.52.0
めんどいので駆け足で。
TL;DR
追加されたCop
Style/StringHashKeys
Style/RandomWithOffset
Lint/ShadowedArgument
Lint/MissingCopEnableDirective
Rails/EnvironmentComparison
Style/EmptyBlockParameter
Style/EmptyLambdaParameter
Style/TrailingBodyOnMethodDefinition
Rails/InverseOf
Style/TrailingMethodEndStatement
Gemspec/RequiredRubyVersion
Lint/NestedPercentLiteral
Gemspec/DuplicatedAssignment
Style/ColonMethodDefinition
Layout/ClassStructure
Rails/CreateTableWithTimestamps
Style/ExtendSelf
- 多分revertされる https://github.com/bbatsov/rubocop/pull/5233
Rails/RedundantReceiverInWithOptions
Style/EvalWithLocation
Layout/EmptyLinesAroundArguments
Layout/SpaceInsideReferenceBrackets
Layout/SpaceInsideArrayLiteralBrackets
Rails/LexicallyScopedActionFilter
Rails/Presence
リネームされたCop
Lint/RescueWithoutErrorClass
=>Style/RescueStandardError
リネーム、新規追加Copに対応するにはmry
を使うと便利です。
$ gem install rubocop -v 0.52.0 $ gem install mry -v 0.52.0.0 $ mry --target 0.52.0 --from 0.51.0 .rubocop.yml
新規追加Cop
特にコメントしておきたいやつについてのみ書きます。
Style/ExtendSelf
これは、すでに全く同じ目的のCopがStyle/ModuleFunction
という名前で存在したので、恐らくrevertされます。 See https://github.com/bbatsov/rubocop/pull/5233
まあ、これを気に実装が見直されていい感じになったりするのでは。
Style/StringHashKeys
https://github.com/bbatsov/rubocop/pull/4946
{"foo" => 'bar'}
のような文字列がキーとなったHashにたいして{foo: 'bar'}
のようにSymbolをキーにしましょうと怒るCop。
これの二つは意味が違うし、文字列をキーとしなければいけないケースでSymbolを使えと言ってしまう可能性も高いのでデフォルトでは無効になっています。
ナンセンスな警告を気軽に無視できるような環境を持っている人は有効にしてみてもいいのでは、と思っています。例えばSideCIを使っているとか。
Style/EvalWithLocation
私が追加したCopです。 See Style/EvalWithLocation Copを作った - pockestrap
Style/EmptyBlockParameter
, Style/EmptyLambdaParameter
私が追加したCopです。 See `Style/EmptyBlockParameter`(と`Style/EmptyLambdaParameter`)を作った - pockestrap
Rails/Presence
仕事で「これCopにできそうだなー」という事案を発見したのでとりあえずRuboCop-JPにIssueを挙げておいたら、wata727がさくっと対応してくれた。
foo.present? ? foo : nil
のようなコードは単純にfoo.presence
で良いので、そう書きましょうと言うCop
Gemspec/DuplicatedAssignment
これもRuboCop-JPに登録していたら、koicさんが対応してくれた。
Gemspec/RequiredRubyVersion
これもkoicさんが対応してくれた。
RuboCopのTargetRubyVersion
って実はあまり理解されていないのでは、と感じたのでこのCopが欲しいなーと思っていた。
TargetRubyVersion
はRailsアプリケーションなどの場合はそのアプリケーションが動いているRubyのバージョンをかけばいいから素直で良いのだけど、ライブラリなどの場合は「そのライブラリがサポートする最小のRubyのバージョン」を書かなくてはいけない。
これが周知されている気がしなかったのと、gemspecのバージョンを上げても.rubocop.yml
のバージョンを上げるのは忘れるといったことは容易に想像がつくため、Copとしてあればいいなーと思ってIssueを起票した。
過去のリリース
- RuboCop 0.51.0 のCHANGELOGを読む - pockestrap
- RuboCop 0.50.0 のCHANGELOGを読む - pockestrap
- RuboCop 0.49.0 のCHANGELOGを読む - pockestrap
- RuboCop 0.48.0 のCHANGELOGを読む - Qiita
- RuboCop 0.47.0 のCHANGELOGを読む - Qiita
- RuboCop 0.46.0 のCHANGELOGを読む - SideCI TechBlog
- RuboCop 0.45.0 のCHANGELOGを読む - SideCI TechBlog
- RuboCop 0.44.0 / 0.44.1 のCHANGELOGを読む - SideCI TechBlog
- RuboCop 0.43.0 の CHANGELOG を読む - SideCI TechBlog
- RuboCop 0.41 / 0.41.1 がリリースされました。 - SideCI TechBlog