TechBlogSideCIのエンジニアによる技術ブログです。私は渋谷にあるオフィスには行かずリモートで勤務していました。Release!)がリリースされました。多数の機能追加やバグ修正が含まれています。Requestも10個含まれています。今日はそのCHANGELOGから、気になる新機能を見ていきましょう。新規Cop追加Copとは、RuboCopにおいてひとつのルールを指す言葉です。「インデントが正しいかチェックする」「非推奨メソッドを使っていないかチェックする」などが1つのCopの単位になります。この章では、0.45.0で新たに追加されたCopをひとつずつ紹介します。http://rubocop.readthedocs.io/en/latest/cops_lint/#lintemptywhen解説このCopは、空のwhen節を検出します。Nothingend上記のコードではvariableが'y'の場合のwhen節が書かれていますが、この中身は空であるため意味を成しません。'y'節はそのまま削除することが出来ます。以下の様なコードの場合はwhen節を削除すると結果が変わってしまう為、安全にwhen節を削除出来ないので注意が必要です。http://rubocop.readthedocs.io/en/latest/cops_style/#multilineifmodifier解説Rubyには通常のif式とは別に、修飾子スタイルのif式が存在します。この二つのif式は、両者共に同様の結果を返します。cond修飾子スタイルのifは記述が簡潔になるため便利ですが、以下のように複数行に渡る式に対して使用すると分かりづらいと言う欠点があります。condこのCopは、上記のような複数行にかかるif修飾子を検出します。このCopはAuto-Correctに対応しているので、RuboCopに-aオプションを付与して実行することで、自動的に修正することが可能です。http://rubocop.readthedocs.io/en/latest/cops_style/#stylespaceinlambdaliteral解説Rubyには無名関数を定義する方法がいくつかありますが、そのうちの一つにlambdaのSyntaxがあります。2.3.0)このCopは、lambdaを定義する際の->と(の間にスペースを入れるかどうかを検査します。}デフォルトの設定では、間にスペースを入れない後者のコードを正しいものとし、スペースが入った前者のコードにはwarningを出します。.rubocop.ymlに以下のように記述することで、逆の設定を行うことが可能です。http://rubocop.readthedocs.io/en/latest/cops_lint/#lintemptyexpression解説Rubyは以下のような空のカッコも正しい式とみなします。その値はnilとなります。nilこのようなコードは何らかの誤りである可能性が高いでしょう。そのため、このCopは上記のようなコードに対してwarningを出します。今回のリリースでは新規Cop以外にもいくつかの新機能が追加されています。そのうちのいくつかを見ていきましょう。https://github.com/bbatsov/rubocop/pull/3538正確には新機能ではないのですが、今回のリリースに含まれているので紹介させていただきます。http://rubocop.readthedocs.io/en/latest/cops_lint/http://rubocop.readthedocs.io/en/latest/cops_metrics/http://rubocop.readthedocs.io/en/latest/cops_performance/http://rubocop.readthedocs.io/en/latest/cops_rails/http://rubocop.readthedocs.io/en/latest/cops_security/http://rubocop.readthedocs.io/en/latest/cops_style/上記のリンクに全てのCopのドキュメントが書かれています。各Copについて、解説、使用例、デフォルト値などが書かれているので、Copを設定する際の良い手助けになるでしょう。https://github.com/bbatsov/rubocop/pull/3658--force-default-configオプションを使用すると、.rubocop.ymlなどの存在を無視してRuboCopを動作させることが可能です。/dev/nullのようなワークアラウンドで実現することが出来ましたが、このオプションによって公式にこの機能が提供されました。RuboCop自体のデバッグの際などに便利かも知れませんね。0.45.0ではこの他にも多くの機能追加、バグ修正が行われています。詳しい変更を知りたい方は、リリースノートをご覧ください。0.45.0を利用することが可能です。ルールを見ていこうの会あけましておめでとうございます。