平野さんのパッチが元ネタのここ数日前の話。
RuboCop で特定の department や cop のみ適用する場合に使える --only
やその逆の --except
での Cop 名の指定にタイプミスがあった場合に、本来入力しようとしていたと思われる Cop の候補が補完表示される EoD なパッチ。次の RuboCop のリリース (0.53.0 かな?) から適用されると思う。
bbatsov/rubocop#5300 では候補の探索が正規表現の前方一致だったのを、pocke さんのコメントにあったようなレーベンシュタイン距離か何かでやれると良さそうだったので、以下のように DidYouMean でのモジュールで解決しようとしたけれど、このインタフェースだと Ruby のバージョン縛りがあるので断念 (あと後方互換が担保されるインタフェースか判断できなかったのも理由のひとつ) 。
DidYouMean::SpellChecker.new(dictionary: cop_names).correct(name)
PR としては、pocke さんに教えてもらった StringUtil.similarity
を使った類似文字列の探索という実装にしたのだった。
ちなみに、RuboCopには既に類似した文字列を探すメソッドが生えています。 https://t.co/iHUeczIDYi レーベンシュタイン距離ではなかった気はします
— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) 2017年12月26日
そのあたりの経緯は PR のコミットメッセージ (と Description) に記してあるので詳細はそちらにて。