diff options
Diffstat (limited to 'rubocop/cop/default_scope.rb')
-rw-r--r-- | rubocop/cop/default_scope.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/rubocop/cop/default_scope.rb b/rubocop/cop/default_scope.rb new file mode 100644 index 00000000000..39f8c8e9ed0 --- /dev/null +++ b/rubocop/cop/default_scope.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module RuboCop + module Cop + # Cop that blacklists the use of `default_scope`. + class DefaultScope < RuboCop::Cop::Cop + MSG = <<~EOF + Do not use `default_scope`, as it does not follow the principle of + least surprise. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33847 + for more details. + EOF + + def_node_matcher :default_scope?, <<~PATTERN + (send {nil? (const nil? ...)} :default_scope ...) + PATTERN + + def on_send(node) + return unless default_scope?(node) + + add_offense(node, location: :expression) + end + end + end +end |