我可能遗漏了一些明显的东西,但似乎Rubocop在关闭end
块时跳过了begin
的对齐方式。
鉴于这种情况:
begin
# Foo
end
我希望“结尾”出现布局错误:Layout/EndAlignment end is not aligned with begin
但是,鲁博科似乎认为这是正确的。
我希望Layout/DefEndAlignment
,Layout/EndAlignment
和Layout/BlockAlignment
中的一个可以管理此行为,但是似乎没有任何选择会产生任何效果。
任何Rubocop专家都知道如何修复此配置,或者这是潜在的错误?
在没有begin
的情况下使用rescue
的用例是使用备注设置计算值
@ivar ||= begin
# Do some stuff
# Do more stuff
# Then return the value
end
答案 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
。它支持许多其他功能(class
,module
,if
,while
等),因此也许这是一个疏忽。IndentationConsistency
似乎只关注块的内容,而忽略了end
IndentationWidth
被描述为IndentationConsistency
的“同伴”,因此似乎也只关心块的内容RescueEnsureAlignment
与块相关,但似乎仅与rescue
和ensure
关键字有关最后,这似乎是对最新的rubocop(0.77.0)中EndAlignment
的实施的疏忽。我建议打开一个问题。