ruby 未初始化的常量RuboCop::Cop::Base

lqfhib0f  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(99)

我使用gem 'rubocop', '~> 0.81.0',当我试图创建一个自定义的rubocop文件如下:

lib/custom_cops/no_timecop.rb

return unless defined?(::RuboCop)

module CustomCops
  class NoTimecop < ::RuboCop::Cop::Base
    MSG = "`Timecop` の代わりにRails標準の `ActiveSupport::Testing::TimeHelpers` が使えませんか?".freeze

    def on_send(node)
      if node.source.include?("Timecop") && node.receiver.const_name == "Timecop"
        add_offense(node)
      end
    end
  end
end

字符串
我遇到了一个错误uninitialized constant RuboCop::Cop::Base
如何修复此错误?
我不知道我可能错过了什么,我希望得到一些有用的反馈。谢谢你,谢谢

ct3nt3jp

ct3nt3jp1#

您使用的是Rubocop的旧版本,0.81.0的发布时间比three years ago的发布时间要长,而且该版本确实没有Rubocop::Cop::Base类。相反,自定义cop必须从另一个名为Rubocop::Cop::Cop的类继承。
也就是说,您有三种选择:
1.将您的自定义复制更改为从Rubocop::Cop::Cop继承。
1.将Rubocop依赖项至少更新为0.87.0,该版本引入了Rubocop::Cop::Base类,但仍有三年的历史。
1.或者趁机将Rubocop更新至最新版本。在撰写本文时,维护人员建议使用gem 'rubocop', '~> 1.54', '>= 1.54.2'
当然,我建议使用最新版本,但这可能需要一些努力,因为一些警察改变了,新的被添加,你将需要更新你的代码,以修复所有新发现的罪行。

相关问题