创建一个rubocop cop,该方法在无障碍调用方法时触发

时间:2019-04-03 16:17:18

标签: ruby rubocop ruby-parser

我正在尝试开发一个新的警察(基于these guidelines),并竭尽全力以获取正确的node pattern

我希望警察在boost::asio::io_service io_service; boost::asio::io_service service2; timer.async_wait(tick); boost::thread_group threads; threads.create_thread(boost::bind(&boost::asio::io_service::run, &io_service)); service2.run(); threads.join_all(); 被称为而没有提供阻止的情况下注册犯罪
X.some_method是冒犯,但X.some_method不是冒犯。

我得到了用于识别X.some_method { blah }的正确模式,即X.some_method
但是不确定如何为“未分配块”创建模式吗?

1 个答案:

答案 0 :(得分:1)

显然,在已解析的AST中,当给一个节点一个块时,该节点然后表示为该块的第一个孩子

'(send (const nil? :X) :some_method ...'

我们可以使用[92] pry(RuboCop)> node # `X.some_method(something) { do_something }` => s(:block, s(:send, s(:const, nil, :X), :some_method, s(:send, nil, :something)), s(:args), s(:send, nil, :do_something)) 实例进行检查。
这是完整的实现(包括多个方法名称的选项):

Rubocop::AST