既存コードで .all
とかやっている場所を ag である程度まで*1洗い出そうと正規表現と格闘した。
ag 'users?(.where.+)?.all'
みたいなので単一行のユースケースは良い感じに絞り込めたものの、メソッドチェーンしているやつ (multi line) が拾えないよと同僚から指摘を受けた。
全部まとめた表現は自分ではちょっと書けそうになかったので個別のケースに絞って書いてみたのがこんな感じ。
行頭に \.
が来るケース
$ ag 'user(\s*\..*\n)+\s*(\..*)*\.all' test.rb 11: active_users = User 12: .active 13: .all
行末に \.
が来るケース
$ ag 'subscriptions.*\.\n(\s*.*\.\n)+\s*(\..*)*all' test.rb 11: active_subscriptions = user.subscriptions. 12: active. 13: all
混在しているケース
無視
rubocop にもそういえばこのスタイルに関する cop があったようなと思ったらやっぱりあった