【问题标题】:how to turn off Cyclomatic complexity for where is too high如何关闭哪里太高的圈复杂度
【发布时间】:2018-01-29 22:29:11
【问题描述】:

我在模型中有一个抛出 lint 错误的 where 方法。模型中的整个代码此时只是一个测试代码,稍后将进行重构。所以我现在想关闭这个 lint 错误。

更新: 这是我遇到 lint 错误的方法

def self.where(start_date, end_date, customer_id, type, location, is_registered)
  filtered_data = if start_date && end_date
                     customers.select do |e|
                       e[:startDateTime].to_datetime >= start_date.to_datetime &&
                         e[:endDateTime].to_datetime <= end_date.to_datetime
                     end
                   elsif start_date
                     customers.select {|e| e[:startDateTime].to_datetime >= start_date.to_datetime }
                   elsif end_date
                     customers.select {|e| e[:endDateTime].to_datetime <= end_date.to_datetime }
                   else
                     customers
                   end

  if !is_registered.nil? # is_registered is true or false
    filtered_data = customers.select { |e| e[:isRegistered].to_s == is_registered }
  end
  # Check if hash presents and check if the keys have valid values.
  if customer_id || type || location
    hash = { customerId: customer_id.to_i, type: type, location: location }
    # delete if type, location or customer_id is nil.
    hash = hash.delete_if { |_k, v| v.nil? || v == 0 }
    keys = hash.keys
    filtered_data = filtered_data.select { |h| h.select { |k| keys.include?(k) } == hash }
  else
    filtered_data
  end

  filtered_data.map do |slot|
    mock_customer(slot[:id], slot[:customerId], slot[:name], slot[:startDateTime],
               slot[:endDateTime], slot[:location], slot[:status])
  end
end

我尝试在模型中添加# rubocop:disable Metrics/AbcSize,但没有帮助。

【问题讨论】:

  • 您得到的确切错误是什么?你能显示代码或至少行吗?
  • @TamerShlash 当然请检查更新的问题

标签: ruby rubocop


【解决方案1】:

试试这个:

# rubocop:disable Metrics/CyclomaticComplexity
.... your method here
# rubocop:enable Metrics/CyclomaticComplexity

另外,如果您想为所有这些测试文件关闭 Rubocop(因为您要重构它们),您可以尝试this answer

【讨论】:

    【解决方案2】:

    这对我有用

    # rubocop:disable Style/CyclomaticComplexity
    yor code
    # rubocop:enable Style/CyclomaticComplexity
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-20
      • 2010-09-11
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多