Lint/SplatKeywordArguments cop を実装した

今月の Rails/OSS パッチ会で発注のあった cop を実装した。

github.com

Ruby の以下のコミットで入っている EXPERIMENTAL の警告のエミュレーションとなる。

https://github.com/ruby/ruby/commit/a23eca2

% ruby -we "def m(a) end; h = {foo: 1}; m(**h)"
-e:1: warning: passing splat keyword arguments as a single Hash to `m'

EXPERIMENTAL というもののこの警告を消すような対応が入っていたりしているので、cop 化しての PR を開いた。

いちおう手元のアプリケーションでのドッグフーディングで極めて少量の警告だったことと、勤務先が提供している某サービスの実装で警告ゼロだったこともありデフォルト Enable としている。

PR の説明に書いたとおり splat keyword arguments かそうでないかで振る舞いの互換はないため、autocorrect は意図して実装してない。