当分配进入下一行时,Rubocop规则强制执行双缩进

时间:2015-03-24 15:51:29

标签: ruby coding-style rubocop

我们的编码风格表明,如果赋值不适合一行,但赋值将自己适合一行,我们应该将该行缩进四个空格而不是两行。例如:

my_var = Some.reasonable_method_call(param1)
my_var2 = 
    Some.crazy_long_ridiculous_method_that_doesnt_fit_on_same_line(param1)

我可以使用Rubocop规则强制执行此操作吗?我们在块内部使用两个空格缩进,并且用于长分配的四个空格缩进有助于直观地指示该行不嵌套在块中,而是前一行的延续。

1 个答案:

答案 0 :(得分:2)

查看rubocop源后,参数对齐规则似乎在/lib/rubocop/cop/style/align_parameters.rb line 34:

 def base_column(node, args)
   if fixed_indentation?
     lineno = target_method_lineno(node)
       line = node.loc.expression.source_buffer.source_line(lineno)
         indentation_of_line = /\S.*/.match(line).begin(0)
 ------>  indentation_of_line + configured_indentation_width
   else
     args.first.loc.column
   end
 end

configured_indentation_widthlib/rubocop/cop/mixin/autocorrect_alignment.rb line 10:

中定义
  def configured_indentation_width
 -> config.for_cop('IndentationWidth')['Width']
  end

该变量存储在/config/default.yml中,这需要将所有代码设置为4个空格而不是2个(类似于Python PEP8)。

否则,你可以修改rubocop的源代码,在多行参数赋值/方法调用中总是需要4个空格。

另一个(更好)选项是修改源代码,但添加对配置变量的引用,以便您不使用硬编码值。