module RuboCop::GitlabSecurity::TopLevelDescribe
Helper methods for top level describe cops
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/gitlab-security/top_level_describe.rb, line 11 def on_send(node) return unless respond_to?(:on_top_level_describe) return unless top_level_describe?(node) _receiver, _method_name, *args = *node on_top_level_describe(node, args) end
Private Instance Methods
describe_statement_children(node)
click to toggle source
# File lib/rubocop/gitlab-security/top_level_describe.rb, line 50 def describe_statement_children(node) node.each_child_node(:send).select do |element| element.children[1] == :describe end end
root_node()
click to toggle source
# File lib/rubocop/gitlab-security/top_level_describe.rb, line 42 def root_node processed_source.ast end
single_top_level_describe?()
click to toggle source
# File lib/rubocop/gitlab-security/top_level_describe.rb, line 46 def single_top_level_describe? top_level_nodes.one? end
top_level_describe?(node)
click to toggle source
# File lib/rubocop/gitlab-security/top_level_describe.rb, line 22 def top_level_describe?(node) _receiver, method_name, *_args = *node return false unless method_name == :describe top_level_nodes.include?(node) end
top_level_nodes()
click to toggle source
# File lib/rubocop/gitlab-security/top_level_describe.rb, line 29 def top_level_nodes nodes = describe_statement_children(root_node) # If we have no top level describe statements, we need to check any # blocks on the top level (e.g. after a require). if nodes.empty? nodes = root_node.each_child_node(:block).flat_map do |child| describe_statement_children(child) end end nodes end