class RuboCop::Git::Runner

ref. github.com/thoughtbot/hound/blob/d2f3933/app/services/build_runner.rb

Public Instance Methods

run(options) click to toggle source
# File lib/rubocop/git/runner.rb, line 7
def run(options)
  options = Options.new(options) unless options.is_a?(Options)

  @options = options
  @files = DiffParser.parse(git_diff(options))

  display_violations($stdout)

  exit(1) if violated?
end

Private Instance Methods

display_violations(io) click to toggle source
# File lib/rubocop/git/runner.rb, line 45
def display_violations(io)
  formatter = RuboCop::Formatter::ClangStyleFormatter.new(io)
  formatter.started(nil)

  violations.map do |violation|
    offenses = violation.offenses
    offenses = offenses.reject(&:disabled?) if offenses.first.respond_to?(:disabled?)
    formatter.file_finished(
      violation.filename,
      offenses.compact.sort.freeze
    )
  end

  formatter.finished(@files.map(&:filename).freeze)
end
git_diff(options) click to toggle source
# File lib/rubocop/git/runner.rb, line 35
def git_diff(options)
  args = %w(diff --diff-filter=AMCR --find-renames --find-copies)

  args << '--cached' if options.cached
  args << options.commit_first.shellescape if options.commit_first
  args << options.commit_last.shellescape if options.commit_last

  `git #{args.join(' ')}`
end
pull_request() click to toggle source
# File lib/rubocop/git/runner.rb, line 31
def pull_request
  @pull_request ||= PseudoPullRequest.new(@files, @options)
end
style_checker() click to toggle source
# File lib/rubocop/git/runner.rb, line 24
def style_checker
  StyleChecker.new(pull_request.pull_request_files,
                   @options.rubocop,
                   @options.config_file,
                   pull_request.config)
end
violated?() click to toggle source
# File lib/rubocop/git/runner.rb, line 61
def violated?
  violations.any? do |violation|
    offenses = violation.offenses
    offenses = offenses.reject(&:disabled?) if offenses.first.respond_to?(:disabled?)
    offenses && offenses.length > 0
  end
end
violations() click to toggle source
# File lib/rubocop/git/runner.rb, line 20
def violations
  @violations ||= style_checker.violations
end