我希望阻止在我们的代码库中使用 unscoped
。在 rubocop 中是否存在允许我指定关键字的现有 linter?如果没有,我是否需要编写自定义 cop 来实现它?
我希望阻止在我们的代码库中使用 unscoped
。在 rubocop 中是否存在允许我指定关键字的现有 linter?如果没有,我是否需要编写自定义 cop 来实现它?
我的同行帮了我。看来我们需要编写自定义剪贴板。
module RuboCop
module Cop
module Hired
class Unscoped < Cop
MSG = "Avoid using `unscoped`."
def_node_matcher :unscoped?, <<-END
(send _ :unscoped)
END
def on_send(node)
return unless unscoped?(node)
add_offense(node, :expression, MSG % node.source)
end
end
end
end
end
将其放入文件夹中,比如说 lib/cops/
,然后将其添加到.rubocop.yml
中:
require:
- ./lib/cops/<whatever_you_called_the_file>.rb
MSG
将自动传递给 #add_offense
。 - Drenmivar&.unscoped
。您需要添加一个单独的 on_csend(node)
来处理这种情况,并更新匹配器为:
{ (send ... :unscoped) (csend ... :unscoped) }
。 - kooshywoosh
unscoped
is a method - not a keyword. Keywords are identifiers that have a specific significance to the parser such asif, else, case, do, when
- max