Module: SimpleCov::StaticCoverageExtractor::MethodCollector
- Included in:
- Visitor
- Defined in:
- lib/simplecov/static_coverage_extractor/method_collector.rb
Overview
Visitor mixin that collects method tuples and tracks the lexical
class / module nesting that names them, in the shape Ruby's
Coverage reports methods. Mixed into Visitor, it shares that
visitor's @methods / @class_stack state and keeps the
method-collection concern separate from branch extraction.
Instance Method Summary collapse
-
#visit_class_node(node) ⇒ Object
Track class/module nesting so method tuples carry the lexical class name.
-
#visit_def_node(node) ⇒ Object
def name(...)anddef self.name(...)both produce DefNode. - #visit_module_node(node) ⇒ Object
Instance Method Details
#visit_class_node(node) ⇒ Object
Track class/module nesting so method tuples carry the lexical
class name. Module + Class are both treated as namespaces here
since Coverage reports both as the constant.
14 15 16 |
# File 'lib/simplecov/static_coverage_extractor/method_collector.rb', line 14 def visit_class_node(node) with_class(constant_name(node.constant_path)) { super } end |
#visit_def_node(node) ⇒ Object
def name(...) and def self.name(...) both produce DefNode.
The class context is the surrounding lexical class/module (or
Object at the top level, matching Coverage's convention).
25 26 27 28 29 30 31 |
# File 'lib/simplecov/static_coverage_extractor/method_collector.rb', line 25 def visit_def_node(node) loc = node.location class_name = @class_stack.last || "Object" key = [class_name, node.name, loc.start_line, loc.start_column, loc.end_line, loc.end_column] @methods[key] = 0 super end |
#visit_module_node(node) ⇒ Object
18 19 20 |
# File 'lib/simplecov/static_coverage_extractor/method_collector.rb', line 18 def visit_module_node(node) with_class(constant_name(node.constant_path)) { super } end |