1
我想阻止在我们的代码库中使用unscoped
。 rubocop中是否存在允许指定关键字的linter?如果不是,如果我想完成它,我是否必须写一个自定义警察?如何让Rubocop检查特定方法/关键字的用法?
我想阻止在我们的代码库中使用unscoped
。 rubocop中是否存在允许指定关键字的linter?如果不是,如果我想完成它,我是否必须写一个自定义警察?如何让Rubocop检查特定方法/关键字的用法?
我的同行帮助了我。看起来我们需要写一个自定义的警察。
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
看到http://www.rubydoc.info/github/bbatsov/RuboCop/RuboCop/NodePattern
看起来不错! :-)注意,如果你省略了最后一个参数,'MSG'会自动传递给'#add_offense'。 – Drenmi
'unscoped'是一个方法 - 不是关键字。关键字是对解析器具有特定意义的标识符,例如'if,else,case,do,when' – max
在看到[此问题]后(https://github.com/bbatsov/rubocop/issues/2939)我想答案是写一个自定义的警察。 – BoraMa