Class: JRuby::Lint::Checkers::ObjectSpace

Inherits:
Object
  • Object
show all
Includes:
JRuby::Lint::Checker
Defined in:
lib/jruby/lint/checkers/object_space.rb

Constant Summary collapse

METHODS =
%w(each_object _id2ref)

Instance Attribute Summary

Attributes included from JRuby::Lint::Checker

#collector

Instance Method Summary collapse

Methods included from JRuby::Lint::Checker

included, loaded_checkers

Instance Method Details

#add_finding(collector, node) ⇒ Object



19
20
21
22
# File 'lib/jruby/lint/checkers/object_space.rb', line 19

def add_finding(collector, node)
  collector.findings << Finding.new("Use of ObjectSpace is expensive and disabled by default. Use -X+O to enable.",
                                    [:objectspace, :warning], node.position)
end

#visitCallNode(node) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/jruby/lint/checkers/object_space.rb', line 7

def visitCallNode(node)
  if METHODS.include?(node.name)
    begin
      next unless node.receiver_node.node_type.to_s == "CONSTNODE" && node.receiver_node.name == "ObjectSpace"
      next if node.args_node && node.args_node.size == 1 &&
        %w(Class Module).include?(node.args_node[0].name)
      add_finding(collector, node)
    rescue
    end
  end
end