Sha256: 460a3ddca52ca66d57e07efb193b05449450cbb87be4bff474537d0fd32bb879

Contents?: true

Size: 1.92 KB

Versions: 6

Compression:

Stored size: 1.92 KB

Contents

require 'pdk'
require 'pdk/cli/exec'
require 'pdk/util'
require 'pdk/util/bundler'
require 'pdk/validate/base_validator'
require 'pdk/validate/ruby_validator'

module PDK
  module Validate
    class Rubocop < BaseValidator
      ALLOW_EMPTY_TARGETS = true

      def self.name
        'rubocop'
      end

      def self.cmd
        'rubocop'
      end

      def self.pattern
        '**/**.rb'
      end

      def self.spinner_text(_targets = nil)
        _('Checking Ruby code style (%{pattern}).') % { pattern: pattern }
      end

      def self.parse_options(options, targets)
        cmd_options = ['--format', 'json']

        if options[:auto_correct]
          cmd_options << '--auto-correct'
        end

        cmd_options.concat(targets)
      end

      def self.parse_output(report, result, _targets)
        return if result[:stdout].empty?

        begin
          json_data = JSON.parse(result[:stdout])
        rescue JSON::ParserError
          raise PDK::Validate::ParseOutputError, result[:stdout]
        end

        return unless json_data.key?('files')

        json_data['files'].each do |file_info|
          next unless file_info.key?('offenses')
          result = {
            file: file_info['path'],
            source: 'rubocop',
          }

          if file_info['offenses'].empty?
            report.add_event(result.merge(state: :passed, severity: :ok))
          else
            file_info['offenses'].each do |offense|
              report.add_event(
                result.merge(
                  line:     offense['location']['line'],
                  column:   offense['location']['column'],
                  message:  offense['message'],
                  severity: (offense['corrected']) ? 'corrected' : offense['severity'],
                  test:     offense['cop_name'],
                  state:    :failure,
                ),
              )
            end
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
pdk-1.10.0 lib/pdk/validate/ruby/rubocop.rb
pdk-akerl-1.9.1.1 lib/pdk/validate/ruby/rubocop.rb
pdk-1.9.1 lib/pdk/validate/ruby/rubocop.rb
pdk-1.9.0 lib/pdk/validate/ruby/rubocop.rb
pdk-akerl-1.8.0.1 lib/pdk/validate/ruby/rubocop.rb
pdk-1.8.0 lib/pdk/validate/ruby/rubocop.rb