diff options
author | Stan Hu <stanhu@gmail.com> | 2019-04-27 23:38:05 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-04-29 06:14:53 -0700 |
commit | fad99d934f73536929c4a12e25308473b52769b5 (patch) | |
tree | ead2f1bb4608d3db4713ce1bf8e80a4f0e637318 /rubocop | |
parent | b02458ef52ac3e61d3c8b924e092e956375c15f7 (diff) | |
download | gitlab-ce-fad99d934f73536929c4a12e25308473b52769b5.tar.gz |
Add Rubocop rule to ban include ActionView::Context
Diffstat (limited to 'rubocop')
-rw-r--r-- | rubocop/cop/include_action_view_context.rb | 31 | ||||
-rw-r--r-- | rubocop/rubocop.rb | 1 |
2 files changed, 32 insertions, 0 deletions
diff --git a/rubocop/cop/include_action_view_context.rb b/rubocop/cop/include_action_view_context.rb new file mode 100644 index 00000000000..14662a33e95 --- /dev/null +++ b/rubocop/cop/include_action_view_context.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require_relative '../spec_helpers' + +module RuboCop + module Cop + # Cop that makes sure workers include `::Gitlab::ActionViewOutput::Context`, not `ActionView::Context`. + class IncludeActionViewContext < RuboCop::Cop::Cop + include SpecHelpers + + MSG = 'Include `::Gitlab::ActionViewOutput::Context`, not `ActionView::Context`, for Rails 5.'.freeze + + def_node_matcher :includes_action_view_context?, <<~PATTERN + (send nil? :include (const (const nil? :ActionView) :Context)) + PATTERN + + def on_send(node) + return if in_spec?(node) + return unless includes_action_view_context?(node) + + add_offense(node.arguments.first, location: :expression) + end + + def autocorrect(node) + lambda do |corrector| + corrector.replace(node.source_range, '::Gitlab::ActionViewOutput::Context') + end + end + end + end +end diff --git a/rubocop/rubocop.rb b/rubocop/rubocop.rb index 50eab6f9270..ce6bdbf292c 100644 --- a/rubocop/rubocop.rb +++ b/rubocop/rubocop.rb @@ -4,6 +4,7 @@ require_relative 'cop/gitlab/predicate_memoization' require_relative 'cop/gitlab/httparty' require_relative 'cop/gitlab/finder_with_find_by' require_relative 'cop/gitlab/union' +require_relative 'cop/include_action_view_context' require_relative 'cop/include_sidekiq_worker' require_relative 'cop/safe_params' require_relative 'cop/active_record_association_reload' |