class RuboCop::Runner

def process_file(file)

def process_file(file)
  puts "Scanning #{file}" if @options[:debug]
  file_started(file)
  cache = ResultCache.new(file, @options, @config_store) if cached_run?
  if cache && cache.valid?
    offenses = cache.load
  else
    source = get_processed_source(file)
    source, offenses = do_inspection_loop(file, source)
    offenses = add_unneeded_disables(file, offenses.compact.sort, source)
    save_in_cache(cache, offenses)
  end
  formatter_set.file_finished(file, offenses)
  offenses
rescue InfiniteCorrectionLoop => e
  formatter_set.file_finished(file, e.offenses.compact.sort.freeze)
  raise
end