codeclimate/codeclimate

View on GitHub
lib/cc/config/validation/json.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module CC
  class Config
    module Validation
      class JSON < FileValidator
        private

        def validate
          @data = ::JSON.parse(File.read(path))

          return unless validate_hash_data

          validate_version
          validate_prepare
          validate_engines("plugins")
          validate_checks
          validate_exclude_pattern("exclude_patterns")

          warn_unrecognized_keys(%w[checks prepare plugins exclude_patterns version])
        rescue ::JSON::ParserError => ex
          errors << "Unable to parse: #{ex.message}"
        end

        def validate_version
          unless data.key?("version")
            warnings << %(missing 'version' key. Please add `"version": "2"`)
          end
        end
      end
    end
  end
end