class Terracop::Formatters::Json

Generates a JSON document listing all the offenses. Ideal to generate ouputs to be digested by other tools in a CI pipeline.

Public Instance Methods

generate(resources) click to toggle source
# File lib/terracop/formatters/json.rb, line 10
def generate(resources)
  {
    metadata: meta,
    resources: build_resources(resources),
    summary: {
      offense_count: resources.values.map(&:count).sum,
      resource_count: resources.count
    }
  }.to_json
end

Private Instance Methods

build_offenses(offenses) click to toggle source
# File lib/terracop/formatters/json.rb, line 42
def build_offenses(offenses)
  offenses.map do |offense|
    {
      severity: offense[:severity],
      cop_name: offense[:cop_name],
      message: offense[:message]
    }
  end
end
build_resources(resources) click to toggle source
# File lib/terracop/formatters/json.rb, line 33
def build_resources(resources)
  resources.map do |resource, offenses|
    {
      resource: resource,
      offsenses: build_offenses(offenses)
    }
  end
end
meta() click to toggle source
# File lib/terracop/formatters/json.rb, line 23
def meta
  {
    terracop_version: Terracop::VERSION,
    ruby_engine: RUBY_ENGINE,
    ruby_version: RUBY_ENGINE_VERSION,
    ruby_patchlevel: RUBY_PATCHLEVEL,
    ruby_platform: RUBY_PLATFORM
  }
end