3

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

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

我可以使用 Rubocop 规则来执行此操作吗我们在块内使用两格缩进,长赋值的四格缩进有助于在视觉上表明该行不是嵌套在块中,而是前一行的延续。

4

1 回答 1

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_width定义在lib/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 个空格。

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

于 2015-03-24T19:32:06.740 回答