rubocop进攻但不确定有什么不对

时间:2016-12-31 22:53:06

标签: ruby rubocop

我正在清理一些我继承过的代码并且有这条线但是说实话,我不确定rubocop试图告诉我它的错误。

  total_cost = tmp_totals.inject { |total, tmp_val| total + tmp_val }

我收到此错误

app/models/item_count.rb:58:40: C: Name inject block params |acc, elem|

看起来像这样:

enter image description here

我只是想通过这个警察。它有什么想法让我解决这个问题?

2 个答案:

答案 0 :(得分:5)

默认情况下,Rubocop希望您将这两个变量命名为accelem,而不是totaltmp_val。您可以在自己的rubycop.yml中配置它想要的变量。默认设置如下:

Style/SingleLineBlockParams:
  Methods:
    - reduce:
        - acc
        - elem
    - inject:
        - acc
        - elem

答案 1 :(得分:1)

Rubocop对这个有点过于僵硬。 它应该检查第二个参数是否被称为memacc恕我直言。 只需使用:

total_cost = tmp_totals.inject(0) { |acc, elem| acc + elem }

total_cost = tmp_totals.inject(0, :+)

Rubocop不会抱怨,你会得到0代替零而不是空阵列。

如果你不确定rubocop抱怨什么,你可以:

  • 确保您的代码已提交

  • 使用rubocop -a script.rb

  • 检查代码是否仍然有效

  • 检查区别是什么