Sha256: 8cb610b21918fab5d5416693191199d86278a823c8059b8424fe93682889cc74

Contents?: true

Size: 1.48 KB

Versions: 97

Compression:

Stored size: 1.48 KB

Contents

module CC
  module Analyzer
    class Issue
      DEFAULT_SEVERITY = IssueValidations::SeverityValidation::MINOR
      DEPRECATED_SEVERITY = IssueValidations::SeverityValidation::NORMAL

      SPEC_ISSUE_ATTRIBUTES = %w[
        categories
        check_name
        content
        description
        location
        other_locations
        remediation_points
        severity
        type
      ]

      def initialize(engine_name, output)
        @engine_name = engine_name
        @output = output
      end

      def as_json(*)
        parsed_output.reverse_merge!(
          "engine_name" => engine_name,
          "fingerprint" => fingerprint,
        ).merge!("severity" => severity)
      end

      def fingerprint
        parsed_output.fetch("fingerprint") { default_fingerprint }
      end

      # Allow access to hash keys as methods
      SPEC_ISSUE_ATTRIBUTES.each do |key|
        define_method(key) do
          parsed_output[key]
        end
      end

      def path
        parsed_output.fetch("location", {}).fetch("path", "")
      end

      private

      attr_reader :engine_name, :output

      def default_fingerprint
        SourceFingerprint.new(self).compute
      end

      def severity
        severity = parsed_output.fetch("severity", DEFAULT_SEVERITY)

        if severity == DEPRECATED_SEVERITY
          DEFAULT_SEVERITY
        else
          severity
        end
      end

      def parsed_output
        @parsed_output ||= JSON.parse(output)
      end
    end
  end
end

Version data entries

97 entries across 97 versions & 2 rubygems

Version Path
codeclimate-fede-0.85.38 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.37 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.36 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.35 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.33 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.32 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.31 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.30 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.21 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.24 lib/cc/analyzer/issue.rb
codeclimate-fede-0.85.23 lib/cc/analyzer/issue.rb
codeclimate-0.85.23 lib/cc/analyzer/issue.rb
codeclimate-0.85.22 lib/cc/analyzer/issue.rb
codeclimate-0.85.21 lib/cc/analyzer/issue.rb
codeclimate-0.85.19 lib/cc/analyzer/issue.rb
codeclimate-0.85.18 lib/cc/analyzer/issue.rb
codeclimate-0.85.17 lib/cc/analyzer/issue.rb
codeclimate-0.85.15 lib/cc/analyzer/issue.rb
codeclimate-0.85.14 lib/cc/analyzer/issue.rb
codeclimate-0.85.13 lib/cc/analyzer/issue.rb