如何识别自定义 COP 中的全局 Rails 设置?

How do I identify out the global Rails settings in a custom COP?

我的警察:

# lib/rubocop/cop/myproject/my_cop.rb

require 'rubocop'

module RuboCop
  module Cop
    module MyProject
      class MyCop < RuboCop::Cop::Cop
        # ...
      end
    end
  end
end

这位警察需要了解一些全局设置 Rails。例如,Rails.logger.log_level

但我收到错误:
1) undefined method 'logger' for RuboCop::Cop::Rails:Module - 当我调用 Rails.logger.log_level
2) uninitialized constant Rails - 当我调用 ::Rails.logger.log_level

这可以实现还是愚蠢的想法?

Rubocop 是一个 static 代码分析器。这意味着当您使用 运行 rubocop 命令时,它不会加载任何 ruby 环境,包括 Rails。它只读取 ruby 个文件并将其作为文本文件进行分析。

所以简短的回答是:不,它不能用 Rubocop 实现。

您可以选择:

# lib/rubocop/cop/myproject/my_cop.rb

require 'rubocop'
require_relative '../../../../../config/environment'

module RuboCop
  module Cop
    module MyProject
      class MyCop < RuboCop::Cop::Cop
        # ...
      end
    end
  end
end

并调用 ::Rails.logger.level