diff options
Diffstat (limited to 'bin/rubocop-profile')
-rwxr-xr-x | bin/rubocop-profile | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/bin/rubocop-profile b/bin/rubocop-profile new file mode 100755 index 00000000000..d1e31edbeed --- /dev/null +++ b/bin/rubocop-profile @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# Profile bundled RuboCop version. +# +# See https://github.com/rubocop/rubocop/blob/master/bin/rubocop-profile + +if ARGV.include?('-h') || ARGV.include?('--help') + puts "Usage: same as main `rubocop` command but gathers profiling info" + puts "Additional option: `--memory` to print memory usage" + exit(0) +end +with_mem = ARGV.delete('--memory') +ARGV.unshift '--cache', 'false' unless ARGV.include?('--cache') + +require 'stackprof' +if with_mem + require 'memory_profiler' + MemoryProfiler.start +end +StackProf.start +start = Process.clock_gettime(Process::CLOCK_MONOTONIC) +begin + require 'rubocop' + + exit RuboCop::CLI.new.run +ensure + delta = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start + puts "Finished in #{delta.round(1)} seconds" + StackProf.stop + if with_mem + puts "Building memory report..." + report = MemoryProfiler.stop + end + Dir.mkdir('tmp') unless File.exist?('tmp') + StackProf.results('tmp/stackprof.dump') + report&.pretty_print(scale_bytes: true) + puts "StackProf written to `tmp/stackprof.dump`." +end |