Class: Overcommit::GitHook::RubyStyle
- Inherits:
-
HookSpecificCheck
- Object
- HookSpecificCheck
- Overcommit::GitHook::RubyStyle
- Includes:
- HookRegistry
- Defined in:
- lib/overcommit/plugins/pre_commit/ruby_style.rb
Instance Method Summary collapse
Methods included from HookRegistry
Methods inherited from HookSpecificCheck
friendly_name, #initialize, #name, required!, #skip?, skippable?, #staged, stealth!, #stealth?
Constructor Details
This class inherits a constructor from Overcommit::GitHook::HookSpecificCheck
Instance Method Details
#run_check ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/overcommit/plugins/pre_commit/ruby_style.rb', line 6 def run_check unless in_path?('rubocop') return :warn, 'rubocop not installed -- run `gem install rubocop`' end paths_to_staged_files = Hash[staged.map { |s| [s.path, s] }] staged_files = paths_to_staged_files.keys output = `rubocop --format=emacs --silent #{staged_files.join(' ')} 2>&1` return :good if $?.success? # Keep lines from the output for files that we actually modified error_lines, warning_lines = output.lines.partition do |output_line| if match = output_line.match(/^([^:]+):(\d+)/) file = match[1] line = match[2] end paths_to_staged_files[file].modified_lines.include?(line.to_i) end return :bad, error_lines.join unless error_lines.empty? return :warn, "Modified files have style lints (on lines you didn't modify)\n" << warning_lines.join end |