如何定义 rubocop 规则的例外情况?

How to define exceptions to rubocop rules?

我们正在使用此设置在代码块

之前要求 space
Layout/SpaceBeforeBlockBraces:
  EnforcedStyle: space

但是,在 RSpec 示例中,当 expectchange 方法使用块以提高可读性时,我们不使用 space 方法:

expect{ calling_the_method }.to change{ Model.all.size }.by(1)

Rubocop 抱怨上面的代码。 是否可以告诉它忽略特定方法后的块或忽略匹配正则表达式的行?

我试过:

Layout/SpaceBeforeBlockBraces:
  EnforcedStyle: space
  IgnoredPatterns: ['\A\s*((?:expect)|(.*change))']

Is it possible to tell it [the SpaceBeforeBlockBraces cop] to ignore blocks after specific methods or ignore lines matching regex?

没有。截至 2018-08-12,我认为 SpaceBeforeBlockBraces 不支持 IgnoredPattern 选项,但这可能是一个简单的 PR。 IgnoredPattern 选项是一个 mixin (rubocop/cop/mixin/ignored_pattern.rb),所以你可以 include 它进入你想要的任何警察。 Rubocop 对贡献有严格的规定,因此如果您进行 PR,请务必通读所有说明。

如果您想排除测试目录,SpaceBeforeBlockBraces cop 应该支持 Exclude 选项。我认为所有警察都支持 IncludeExclude