Rubocopとうまくやりあう方法(Assignment in condition – you probably meant to use ==)

rubocop

以下のように、ある条件下で値を変数に代入するというコードがあったとします。

if v = foo  
  puts v
end

この場合、上記のコードは、Rubocopでは以下のような忠告を喰らいます。
Assignment in condition - you probably meant to use ==

なぜなら、 v = foov == foo.に非常に似ているとRubocopが判断してくれるためです。

でも決して間違ったコードを記述しているわけではなく、

v = foo  
if v  
  puts v
end

上記のような、変数を代入してからifで存在を確認する、という一連の動作をまとめて書くRubyライクな書き方なので、問題はない。。(しかし、複数人で開発する場合、読み手によってはやはり「==と=を書き間違えたんじゃないか?」と勘違いされる可能性あり)

そういうのを無視して、とにかくRubocopに忠告を出させたくない!!(且つ、警告を無効化にはしたくない。。)

そういった場合に何とかうまくRubocopとやりあうための方法です。

##Rubocopのチェックをクリアして、且つミスを防ぐために

単純ですが、()で囲みましょう。

if (v = foo)  
  puts v
end  

ちゃんちゃん。。。。

参考:
RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか