我写了一个自定义的 rubocop 警察,摘录是这样的:
def_node_matcher :is_foo_bar?, <<-PATTERN
(send (const nil :Foo) :bar)
PATTERN
def on_send(node)
puts "Match" if is_foo_bar?(node)
end
我正在尝试以下代码的警察:
Foo.bar
有趣的是,node.to_s
以下内容与我的模式完全匹配:
"(send
(const nil :Foo) :bar)"
但是节点不匹配。如果我将模式更改为以下,它可以工作:
(send (...) :bar)
为什么我的原始匹配不起作用?
我的版本:
- 红宝石 2.6.2
- AST 2.4.0
- rubocop 0.77.0
- 解析器 2.6.4.1