`Lint/SplatKeywordArguments` cop を削除する PR を出した

Issue #5887 での false positive のレポートを受けて、Lint/SplatKeywordArguments cop を削除する PR を出した。

github.com

削除にあたり、ag 'remove.*cop' CHANGELOG.md で cop を消した前歴があるか CHANGELOG.md を見たりしたりもしていた (わずかにあった) 。

削除を決めた理由は Issue にあった以下。

options = { opt1: 1, opt2: 2 }
def method1(kw_args); end

def method2(**kw_args); end

method1(**options) # This will warn in ruby 2.6 and currently warns in rubocop.

method2(**options) # This does not warn in ruby 2.6 and should not warn in rubocop.

レシーバーのメソッドの定義を辿って def method(kw_args)def method(**kw_args) を知るといったのは、知る限りいまのメカニズムでは無理なので TKO となった。ランタイムまで行けば source_location とか使ったゴリ技とか浮かびはするので、あとはそれをどう洗練させるかになるけれど、現状の RuboCop のメカニズムでの静的解析だとどうしたものかなのだった (以前ランタイムに頼る PR を出して、あ、あ、あ、となったのを思い出したりしてた) 。

というくらい目処がつかないまま放置した disabled cop があっても良いことはないと思ったので、削除という選択肢をとったのだった。