def refine(data)
      @task ||= ''

      data = parse_data(data)
      return puts data if data.is_a?(String)

      evaluate_severities(data)

      puts summarize

      if @config.is_dev?
        puts dev_format(data)
        ceiling_warning
      else
        # Because this should be returned in the format it was received
        @output[:raw_data] = data.to_json
      end
      @output
    end
def refine(data)
      @task ||= ''

      data = parse_data(data)
      return puts data if data.is_a?(String)

      evaluate_severities(data)

      puts summarize

      if @config.is_dev?
        puts dev_format(data)
        ceiling_warning
      else
        # Because this should be returned in the format it was received
        @output[:raw_data] = data.to_json
      end
      @output
    end
Perform a lint of relevant code

 All defined lints require a "result" method
 @example the result method in the child class
   def result
     @task = __method__.to_s
     @path ||= 'path/or/**/glob/to/files''
     lint_data = JSON.parse(`some-command-line-linter`)
     @output[:files_inspected] ||= files_inspected(extension, delimiter, base_path_replacement)
     refine data_from_output
   end

 Inherits settings from {Config#initialize}
 @see Config#initialize

 @param opts [Hash] ({}) options passed directly to the lint
 @option opts [Hash] :git_files filename: file location
   @see GitControl#lints_and_stats
 @option opts [Array, String] :file_paths lint only specific files or directories
   Accepts globs too
   which is used to define paths from the URL
 @option opts [Config object] :config custom Maximus::Config object
 @return [void] this method is used to set up instance variables
 Convert raw data into warnings, errors, conventions or refactors. Use this wisely.
 @param data [Hash] unfiltered lint data
 @return [Hash] refined lint data and all the other bells and whistles