RuboCop 0.78.0 がリリースされたので、概要をざっくり記しておきます。
今回は新たな cop の追加と LineLength
cop の部署変更が行われたリリースです。
LineLength
cop の部署変更については自分が入れた Breaking Change で、LineLength
の警告への解決は行の折り返しや本意でない名前への変更といったケースがほとんどで、Metrics
として捉えたいロジックの複雑性といったものを解決するものではないのが理由です。そのため Layout
部署に移動しています。
また Layout
部署への移動に対して今回含めていない対応として、LineLength
へのデフォルト値の変更といったものがあります。こちらはデフォルト値とその提案をどうするかを検討しているところ。
pocke さん作の mry も対応版がリリースされているので、コマンドラインでの機械的解決をしたい人 (基本的にそうだと思う) におすすめです。
また今回追加された cop は Lint/NonDeterministicRequireOrder
cop です。以下は提案された PR に記された bad ケースと good ケースです。
# bad Dir["./lib/middleware/*.rb"].each do |file| require file end # good Dir["./lib/middleware/*.rb"].sort.each do |file| require file end
どうやら開発環境と本番環境のファイルシステムの差異で Dir['*/path/*.rb']
の戻り値の並び順が異なったことが起因して問題になったために提案されたとのこと。いまのところ対象の要素を require
の引数にするとき限定でのためコアで持っても良い cop かなといった感じで入っています。
このあたりの経緯は 2019年11月のパッチ会のエントリにも記しているので興味があれば参照してください。
その他に追加オプションや多くのバグ修正が含まれています。何かあればフィードバックお待ちしています。