Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'rubocop/cop/module_with_instance_variables.rb')
-rw-r--r--rubocop/cop/module_with_instance_variables.rb82
1 files changed, 0 insertions, 82 deletions
diff --git a/rubocop/cop/module_with_instance_variables.rb b/rubocop/cop/module_with_instance_variables.rb
deleted file mode 100644
index f101ae09ad2..00000000000
--- a/rubocop/cop/module_with_instance_variables.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-module RuboCop
- module Cop
- class ModuleWithInstanceVariables < RuboCop::Cop::Cop
- MSG = <<~EOL.freeze
- Do not use instance variables in a module. Please read this
- for the rationale behind it:
-
- https://docs.gitlab.com/ee/development/module_with_instance_variables.html
- EOL
-
- def on_module(node)
- return if
- rails_helper?(node) || rails_mailer?(node) || spec_helper?(node)
-
- check_method_definition(node)
-
- # Not sure why some module would have an extra begin wrapping around
- node.each_child_node(:begin) do |begin_node|
- check_method_definition(begin_node)
- end
- end
-
- private
-
- # We ignore Rails helpers right now because it's hard to workaround it
- def rails_helper?(node)
- node.source_range.source_buffer.name =~
- %r{app/helpers/\w+_helper.rb\z}
- end
-
- # We ignore Rails mailers right now because it's hard to workaround it
- def rails_mailer?(node)
- node.source_range.source_buffer.name =~
- %r{app/mailers/emails/}
- end
-
- # We ignore spec helpers because it usually doesn't matter
- def spec_helper?(node)
- node.source_range.source_buffer.name =~
- %r{spec/support/|features/steps/}
- end
-
- def check_method_definition(node)
- node.each_child_node(:def) do |definition|
- # We allow this pattern:
- #
- # def f
- # @f ||= true
- # end
- if only_ivar_or_assignment?(definition)
- # We don't allow if any other ivar is used
- definition.each_descendant(:ivar) do |offense|
- add_offense(offense, :expression)
- end
- # We allow initialize method and single ivar
- elsif !initialize_method?(definition) && !single_ivar?(definition)
- definition.each_descendant(:ivar, :ivasgn) do |offense|
- add_offense(offense, :expression)
- end
- end
- end
- end
-
- def only_ivar_or_assignment?(definition)
- node = definition.child_nodes.last
-
- definition.child_nodes.size == 2 &&
- node.or_asgn_type? && node.child_nodes.first.ivasgn_type?
- end
-
- def single_ivar?(definition)
- node = definition.child_nodes.last
-
- definition.child_nodes.size == 2 && node.ivar_type?
- end
-
- def initialize_method?(definition)
- definition.children.first == :initialize
- end
- end
- end
-end