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