class CC::Analyzer::EngineOutput

Attributes

name[RW]
raw_output[RW]

Public Class Methods

new(name, raw_output) click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 6
def initialize(name, raw_output)
  @name = name
  @raw_output = raw_output
end

Public Instance Methods

as_issue() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 19
def as_issue
  Issue.new(name, raw_output)
end
error() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 35
def error
  if !valid_json?
    { message: "Invalid JSON", output: raw_output }
  elsif !validator.present?
    { message: "Unsupported document type", output: raw_output }
  else
    validator.error
  end
end
issue?() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 11
def issue?
  valid_with_type?("issue")
end
measurement?() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 15
def measurement?
  valid_with_type?("measurement")
end
to_json() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 23
def to_json
  if issue?
    as_issue.to_json
  elsif measurement?
    Measurement.new(name, raw_output).to_json
  end
end
valid?() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 31
def valid?
  valid_json? && validator && validator.valid?
end

Private Instance Methods

parsed_output() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 59
def parsed_output
  @parsed_output ||= JSON.parse(raw_output)
rescue JSON::ParserError
  nil
end
valid_json?() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 49
def valid_json?
  parsed_output.present?
end
valid_with_type?(type) click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 53
def valid_with_type?(type)
  parsed_output &&
    parsed_output["type"].present? &&
    parsed_output["type"].downcase == type
end
validator() click to toggle source
# File lib/cc/analyzer/engine_output.rb, line 65
def validator
  if issue?
    IssueValidator.new(parsed_output)
  elsif measurement?
    MeasurementValidator.new(parsed_output)
  end
end