diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 11:27:35 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 11:27:35 +0300 |
commit | 7e9c479f7de77702622631cff2628a9c8dcbc627 (patch) | |
tree | c8f718a08e110ad7e1894510980d2155a6549197 /rubocop/cop/graphql | |
parent | e852b0ae16db4052c1c567d9efa4facc81146e88 (diff) |
Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42
Diffstat (limited to 'rubocop/cop/graphql')
-rw-r--r-- | rubocop/cop/graphql/resolver_type.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/rubocop/cop/graphql/resolver_type.rb b/rubocop/cop/graphql/resolver_type.rb new file mode 100644 index 00000000000..1209c5dbc6b --- /dev/null +++ b/rubocop/cop/graphql/resolver_type.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +# This cop checks for missing GraphQL type annotations on resolvers +# +# @example +# +# # bad +# module Resolvers +# class NoTypeResolver < BaseResolver +# field :some_field, GraphQL::STRING_TYPE +# end +# end +# +# # good +# module Resolvers +# class WithTypeResolver < BaseResolver +# type MyType, null: true +# +# field :some_field, GraphQL::STRING_TYPE +# end +# end + +module RuboCop + module Cop + module Graphql + class ResolverType < RuboCop::Cop::Cop + MSG = 'Missing type annotation: Please add `type` DSL method call. ' \ + 'e.g: type UserType.connection_type, null: true' + + def_node_matcher :typed?, <<~PATTERN + (... (begin <(send nil? :type ...) ...>)) + PATTERN + + def on_class(node) + add_offense(node, location: :expression) if resolver?(node) && !typed?(node) + end + + private + + def resolver?(node) + node.loc.name.source.end_with?('Resolver') + end + end + end + end +end |