3

私たちのコーディング スタイルでは、割り当てが 1 行に収まらないが、割り当てられた値だけで 1 行に収まる場合は、その行を 2 つではなく 4 つのスペースでインデントする必要があります。例:

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

これを強制するために使用できるRubocoルールはありますか? ブロック内で 2 スペースのインデントを使用します。長い割り当ての 4 スペースのインデントは、その行がブロック内にネストされているのではなく、前の行の続きであることを視覚的に示すのに役立ちます。

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、すべてのコードを 2 つではなく 4 つのスペースに設定する必要がある場所に格納されます (Python PEP8 に似ています)。

それ以外の場合は、rubocop のソース コードを変更して、複数行のパラメーター割り当て/メソッド呼び出しで常に 4 つのスペースを必要とすることができます。

別の (より良い) オプションは、ソース コードを変更することですが、構成変数への参照を追加して、ハードコードされた値を使用しないようにすることです。

于 2015-03-24T19:32:06.740 に答える