RuboCop 的 Rails/DynamicFindBy cop 在遇到 Capybara 的(而不是 Rail 的)find_by_id
方法时给出误报。
显然有一种方法可以将方法列入白名单,以便警察忽略它们。请参阅http://rubocop.readthedocs.io/en/latest/cops_rails/#railsdynamicfindby (提到白名单属性)。
我想将find_by_id
列入白名单,但仅针对我的测试/集成目录中的某些文件(带有 capybara 测试的文件)。这可能吗?
(我知道我可以逐个文件地关闭整个警察,但我不想完全关闭警察。我也知道我可以关闭警察的一部分文件,或逐行,但这些不是首选解决方案。)
最佳答案
无法逐个文件地执行此操作。最接近的方法是在目录级别上进行特定配置,方法是将另一个 .rubocop.yml
配置文件放入其中。
乍一看这似乎是一个解决方案:
# .rubocop.yml
Rails/DynamicFindBy:
Include:
- tests/integrations/first_test.rb
- tests/integrations/second_test.rb
Whitelist:
- find_by_id
但是 Include
的意思是“包含用于检查”,而不是“包含用于配置”,因此这实际上完全排除了警察检查的所有其他项目文件。 (如果其他文件一开始就没有违规行为,您就不会注意到这一点。)
剩下两个选择:
- 使用另一个配置文件将
/integrations
中的所有文件列入白名单#find_by_id
。 - 使用内联禁用和启用。
前者可能是推荐的,除非有充分的理由说明为什么在其他集成测试中不允许使用 #find_by_id
。
关于ruby-on-rails - 我可以按文件将 RuboCop Rails/DynamicFindBy 方法列入白名单吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45721592/