From 41fe97390ceddf945f3d967b8fdb3de4c66b7dea Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 18 Mar 2022 20:02:30 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-9-stable-ee --- rubocop/cop/graphql/graphql_name_position.rb | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 rubocop/cop/graphql/graphql_name_position.rb (limited to 'rubocop/cop/graphql') diff --git a/rubocop/cop/graphql/graphql_name_position.rb b/rubocop/cop/graphql/graphql_name_position.rb new file mode 100644 index 00000000000..f18d65588cc --- /dev/null +++ b/rubocop/cop/graphql/graphql_name_position.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +# This cop ensures that if a class uses `graphql_name`, then +# it's the first line of the class +# +# @example +# +# # bad +# class AwfulClass +# field :some_field, GraphQL::Types::JSON +# graphql_name 'AwfulClass' +# end +# +# # good +# class GreatClass +# graphql_name 'AwfulClass' +# field :some_field, GraphQL::Types::String +# end + +module RuboCop + module Cop + module Graphql + class GraphqlNamePosition < RuboCop::Cop::Cop + MSG = '`graphql_name` should be the first line of the class: '\ + 'https://docs.gitlab.com/ee/development/api_graphql_styleguide.html#naming-conventions' + + def_node_search :graphql_name?, <<~PATTERN + (send nil? :graphql_name ...) + PATTERN + + def on_class(node) + return unless graphql_name?(node) + return if node.body.single_line? + + add_offense(node, location: :expression) unless graphql_name?(node.body.children.first) + end + end + end + end +end -- cgit v1.2.3