class RuboCop::CLI::Command::ExecuteRunner
Run all the selected cops and report the result. @api private
Constants
- INTEGRATION_FORMATTERS
Combination of short and long formatter names.
Public Instance Methods
run()
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 16 def run execute_runner(@paths) end
Private Instance Methods
display_error_summary(errors)
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 69 def display_error_summary(errors) return if errors.empty? warn Rainbow("\n#{pluralize(errors.size, 'error')} occurred:").red errors.each { |error| warn error } warn <<~WARNING Errors are usually caused by RuboCop bugs. Please, report your problems to RuboCop's issue tracker. #{Gem.loaded_specs['rubocop'].metadata['bug_tracker_uri']} Mention the following information in the issue report: #{RuboCop::Version.version(debug: true)} WARNING end
display_summary(runner)
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 56 def display_summary(runner) display_warning_summary(runner.warnings) display_error_summary(runner.errors) end
display_warning_summary(warnings)
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 61 def display_warning_summary(warnings) return if warnings.empty? warn Rainbow("\n#{pluralize(warnings.size, 'warning')}:").yellow warnings.each { |warning| warn warning } end
execute_runner(paths)
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 22 def execute_runner(paths) runner = Runner.new(@options, @config_store) all_pass_or_excluded = with_redirect do all_passed = runner.run(paths) display_summary(runner) all_passed || @options[:auto_gen_config] end maybe_print_corrected_source if runner.aborting? STATUS_INTERRUPTED elsif all_pass_or_excluded && runner.errors.empty? STATUS_SUCCESS else STATUS_OFFENSES end end
maybe_print_corrected_source()
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 86 def maybe_print_corrected_source # Integration tools (like RubyMine) expect to have only the JSON result # when specifying JSON format. Similar HTML and JUnit are targeted as well. # See: https://github.com/rubocop/rubocop/issues/8673 return if INTEGRATION_FORMATTERS.include?(@options[:format]) return unless @options[:stdin] && @options[:autocorrect] (@options[:stderr] ? $stderr : $stdout).puts '=' * 20 print @options[:stdin] end
with_redirect() { || ... }
click to toggle source
# File lib/rubocop/cli/command/execute_runner.rb, line 42 def with_redirect if @options[:stderr] orig_stdout = $stdout begin $stdout = $stderr yield ensure $stdout = orig_stdout end else yield end end