script/detect-invalid-data.rb
#! rails runner# -*- mode: Ruby;-*-# class InvalidDataDetector def initialize @invalid = {} end Method `search` has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
InvalidDataDetector#search has approx 12 statements def search puts 'Searching for invalid data' InvalidDataDetector#search has the variable name 'p' Account.providers.find_each do |p|InvalidDataDetector#search calls 'p.id' 3 times @current = p.id unless p.sections.find_by_system_name('root') error 'root section missing' end InvalidDataDetector#search calls 'p.billing_strategy' 2 times
InvalidDataDetector#search calls 'p.settings' 2 times
InvalidDataDetector#search calls 'p.settings.finance' 2 times if p.billing_strategy && p.settings.finance.denied? error 'finance denied but billing strategy exists' end InvalidDataDetector#search performs a nil-check if p.billing_strategy.nil? && p.settings.finance.allowed? error 'missing billing strategy' end InvalidDataDetector#search contains iterators nested 2 deep if p.provided_cinstances.find_each do |app| if app.user_account.nil? error "application #{app.id} has no buyer" end end if (count = p.forum.posts_count) < 0 error "forum posts_count is #{count}" end end InvalidDataDetector#search calls '@invalid[p.id]' 2 times puts "Found errors in '#{p.name}': #{@invalid[p.id]}" if @invalid[p.id].present? end puts @invalid.inspect @invalid.empty? ? 0 : -1 end private def error(msg) errors = @invalid[@current] ||= [] errors << msg endend exit InvalidDataDetector.new.search