使用Ruby与RSpec时如何通过RuboCop禁止全局作用域声明常量
不需要自定义Cop,有现成的规则可以满足需求,可选方案如下:
方案1:调整已开启的
RSpec/LeakyConstantDeclaration规则配置
你正在使用的RSpec/LeakyConstantDeclaration本身支持全局作用域检测能力,仅需在.rubocop.yml中添加CheckGlobalScope: true配置即可生效,完整配置示例:RSpec/LeakyConstantDeclaration: Enabled: true CheckGlobalScope: true该配置开启后,写在spec文件顶层的常量声明会直接触发
RSpec/LeakyConstantDeclaration告警,和块内常量声明的提示逻辑一致,会自动推荐使用let或者局部变量替代。
注意:该配置项要求rubocop-rspec版本 >= 2.11.0。方案2:使用RuboCop核心规则
Style/ConstantDefinitionAtTopLevel
如果你使用的rubocop-rspec版本较低不支持上述配置,可以单独为spec目录开启核心规则限制顶层常量声明,配置示例:Style/ConstantDefinitionAtTopLevel: Enabled: true Include: - 'spec/**/*' EnforcedStyle: forbidden该规则会完全禁止spec目录下所有文件的顶层常量定义,适配所有支持该规则的RuboCop版本(要求RuboCop核心版本 >= 1.54.0)。
内容的提问来源于stack exchange,提问作者skålfyfan
相关产品推荐
相关产品推荐

