【发布时间】:2019-04-06 05:39:23
【问题描述】:
我有以下课程:
class XXX
def aa
end
def authorized?
false
end
def bb
end
end
并希望确保 Rubocop 存在方法 authorized?。以下代码适用于 Rubocop 控制台:
code = "
class XXX
def aa
end
def authorized?
false
end
def bb
end
end
"
node = RuboCop::ProcessedSource.new(code, RUBY_VERSION.to_f).ast
NodePattern.new('(class ... (begin (def :aa ...)(def :authorized? ...)(def :bb ...) ) )').match(node)
最后一行返回true。但是,我不想依赖任何方法。所以我用
NodePattern.new('(class ... (begin (...)(def :authorized? ...)(...) ) )').match(node)
而且它有效,代码不依赖于方法的名称。但!我也想让它在没有其他方法存在或有更多方法时工作。
基本上,最终目标是检查类上是否定义了方法。我该怎么做?
【问题讨论】: