Sha256: 9906458cd782def2e9c661b85ca5f22896ae3cb0150f936b120baf8a02d1002c

Contents?: true

Size: 1.34 KB

Versions: 24

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module RubyCritic
  module Reporter
    REPORT_GENERATOR_CLASS_FORMATS = %i[json console lint].freeze

    def self.generate_report(analysed_modules)
      RubyCritic::Config.formats.uniq.each do |format|
        report_generator_class(format).new(analysed_modules).generate_report
      end
      RubyCritic::Config.formatters.each do |formatter|
        report_generator_class_from_formatter(formatter).new(analysed_modules).generate_report
      end
    end

    def self.report_generator_class(config_format)
      if REPORT_GENERATOR_CLASS_FORMATS.include? config_format
        require "rubycritic/generators/#{config_format}_report"
        Generator.const_get("#{config_format.capitalize}Report")
      else
        require 'rubycritic/generators/html_report'
        Generator::HtmlReport
      end
    end

    def self.report_generator_class_from_formatter(formatter)
      require_path, class_name = formatter.sub(/([^:]):([^:])/, '\1\;\2').split('\;', 2)
      class_name ||= require_path
      require require_path unless require_path == class_name
      class_from_path(class_name)
    end

    def self.class_from_path(path)
      path.split('::').inject(Object) { |obj, klass| obj.const_get klass }
    rescue NameError => error
      raise "Could not create reporter for class #{path}. Error: #{error}!"
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
rubycritic-4.9.1 lib/rubycritic/reporter.rb
rubycritic-4.9.0 lib/rubycritic/reporter.rb
rubycritic-4.8.1 lib/rubycritic/reporter.rb
rubycritic-4.8.0 lib/rubycritic/reporter.rb
rubycritic-4.7.0 lib/rubycritic/reporter.rb
rubycritic-4.6.1 lib/rubycritic/reporter.rb
rubycritic-4.6.0 lib/rubycritic/reporter.rb
rubycritic-4.5.2 lib/rubycritic/reporter.rb
rubycritic-4.5.1 lib/rubycritic/reporter.rb
rubycritic-4.5.0 lib/rubycritic/reporter.rb
rubycritic-4.4.1 lib/rubycritic/reporter.rb
rubycritic-4.4.0 lib/rubycritic/reporter.rb
rubycritic-4.3.3 lib/rubycritic/reporter.rb
rubycritic-4.3.2 lib/rubycritic/reporter.rb
rubycritic-4.3.1 lib/rubycritic/reporter.rb
rubycritic-4.3.0 lib/rubycritic/reporter.rb
rubycritic-4.2.2 lib/rubycritic/reporter.rb
rubycritic-4.2.1 lib/rubycritic/reporter.rb
rubycritic-4.2.0 lib/rubycritic/reporter.rb
rubycritic-simplecov-4.1.1 lib/rubycritic/reporter.rb