Rubocop:开始块的末端对齐

时间:2019-12-11 22:23:04

标签: ruby-on-rails ruby rubocop linter

我可能遗漏了一些明显的东西,但似乎Rubocop在关闭end块时跳过了begin的对齐方式。

鉴于这种情况:

  begin
        # Foo
      end

我希望“结尾”出现布局错误:Layout/EndAlignment end is not aligned with begin 但是,鲁博科似乎认为这是正确的。

我希望Layout/DefEndAlignmentLayout/EndAlignmentLayout/BlockAlignment中的一个可以管理此行为,但是似乎没有任何选择会产生任何效果。

任何Rubocop专家都知道如何修复此配置,或者这是潜在的错误?

在没有begin的情况下使用rescue的用例是使用备注设置计算值

@ivar ||= begin
  # Do some stuff
  # Do more stuff
  # Then return the value
end

1 个答案:

答案 0 :(得分:2)

更新:这是一个已知问题(https://github.com/rubocop-hq/rubocop/pull/7286

原始答案:

  

给出[input] ..

begin
      # Foo
    end

使用最新的rubocop(0.77.0)进行测试..

    根据文档,
  • BlockAlignment仅涉及do .. end块。
  • BlockEndNewline只关心end自己行,似乎不关心缩进
  • 我认为
  • DefEndAlignment不适用,因为它不是方法定义(def
  • EndAlignment似乎最相关,但似乎不支持begin。它支持许多其他功能(classmoduleifwhile等),因此也许这是一个疏忽
  • IndentationConsistency似乎只关注块的内容,而忽略了end
  • IndentationWidth被描述为IndentationConsistency的“同伴”,因此似乎也只关心块的内容
  • RescueEnsureAlignment与块相关,但似乎仅与rescueensure关键字有关

最后,这似乎是对最新的rubocop(0.77.0)中EndAlignment的实施的疏忽。我建议打开一个问题。