class Overcommit::Hook::PreCommit::PhpCs

Runs ‘phpcs` against any modified PHP files.

Constants

MESSAGE_REGEX

Parse ‘phpcs` csv mode output

MESSAGE_TYPE_CATEGORIZER

Public Instance Methods

parse_messages(messages) click to toggle source

Transform the CSV output into a tidy human readable message

# File lib/overcommit/hook/pre_commit/php_cs.rb, line 29
def parse_messages(messages)
  output = []

  messages.map do |message|
    message.scan(MESSAGE_REGEX).map do |file, line, type, msg|
      type = MESSAGE_TYPE_CATEGORIZER.call(type)
      text = " #{file}:#{line}\n  #{msg}"
      output << Overcommit::Hook::Message.new(type, file, line.to_i, text)
    end
  end

  output
end
run() click to toggle source
# File lib/overcommit/hook/pre_commit/php_cs.rb, line 12
def run
  messages = []

  result = execute(command, args: applicable_files)
  if result.status
    messages = result.stdout.split("\n")
    # Discard the csv header
    messages.shift
  end

  return :fail if messages.empty? && !result.success?
  return :pass if messages.empty?

  parse_messages(messages)
end