Skip to content

Commit d224c2a

Browse files
authored
Merge pull request #989 from Shopify/at-code-metrics-sorbet-types
Collect T::Struct and T::Enum code metrics
2 parents b57312c + 08515a7 commit d224c2a

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

lib/spoom/sorbet/metrics/code_metrics_visitor.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ def visit(node)
7373
# @override
7474
#: (Prism::ClassNode) -> void
7575
def visit_class_node(node)
76+
case node.superclass&.slice
77+
when /^(::)?T::Struct$/
78+
@counters.increment("t_structs")
79+
when /^(::)?T::Enum$/
80+
@counters.increment("t_enums")
81+
end
82+
7683
visit_scope(node) do
7784
super
7885
end

test/spoom/sorbet/metrics/code_metrics_visitor_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,22 @@ def bar; end
3434
assert_equal(1, metrics["accessors"])
3535
end
3636

37+
def test_collects_metrics_about_sorbet_structs_and_enums
38+
metrics = collect_metrics do |context|
39+
context.write!("foo.rb", <<~RUBY)
40+
class Struct < T::Struct; end
41+
class RootStruct < ::T::Struct; end
42+
class Enum < T::Enum; end
43+
class RootEnum < ::T::Enum; end
44+
class Other; end
45+
RUBY
46+
end
47+
48+
assert_equal(5, metrics["classes"])
49+
assert_equal(2, metrics["t_structs"])
50+
assert_equal(2, metrics["t_enums"])
51+
end
52+
3753
def test_collects_metrics_about_sigs
3854
metrics = collect_metrics do |context|
3955
context.write!("foo.rb", <<~RUBY)

0 commit comments

Comments
 (0)