Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'rubocop/cop/gitlab/mark_used_feature_flags.rb')
-rw-r--r--rubocop/cop/gitlab/mark_used_feature_flags.rb29
1 files changed, 19 insertions, 10 deletions
diff --git a/rubocop/cop/gitlab/mark_used_feature_flags.rb b/rubocop/cop/gitlab/mark_used_feature_flags.rb
index a0de43abe85..03ee4805f4e 100644
--- a/rubocop/cop/gitlab/mark_used_feature_flags.rb
+++ b/rubocop/cop/gitlab/mark_used_feature_flags.rb
@@ -47,10 +47,21 @@ module RuboCop
:usage_data_static_site_editor_merge_requests # https://gitlab.com/gitlab-org/gitlab/-/issues/284083
].freeze
+ class << self
+ # We track feature flags in `on_new_investigation` only once per
+ # rubocop whole run instead once per file.
+ attr_accessor :feature_flags_already_tracked
+ end
+
# Called before all on_... have been called
# When refining this method, always call `super`
def on_new_investigation
super
+
+ return if self.class.feature_flags_already_tracked
+
+ self.class.feature_flags_already_tracked = true
+
track_dynamic_feature_flags!
track_usage_data_counters_known_events!
end
@@ -69,7 +80,7 @@ module RuboCop
flag_value = flag_value(node)
return unless flag_value
- if flag_arg_is_str_or_sym?(node)
+ if flag_arg_is_str_or_sym?(flag_arg)
if caller_is_feature_gitaly?(node)
save_used_feature_flag("gitaly_#{flag_value}")
else
@@ -84,9 +95,9 @@ module RuboCop
save_used_feature_flag(matching_feature_flag)
end
end
- elsif flag_arg_is_send_type?(node)
+ elsif flag_arg_is_send_type?(flag_arg)
puts_if_ci(node, "Feature flag is dynamic: '#{flag_value}.")
- elsif flag_arg_is_dstr_or_dsym?(node)
+ elsif flag_arg_is_dstr_or_dsym?(flag_arg)
str_prefix = flag_arg.children[0]
rest_children = flag_arg.children[1..]
@@ -159,18 +170,16 @@ module RuboCop
end.to_s.tr("\n/", ' _')
end
- def flag_arg_is_str_or_sym?(node)
- flag_arg = flag_arg(node)
+ def flag_arg_is_str_or_sym?(flag_arg)
flag_arg.str_type? || flag_arg.sym_type?
end
- def flag_arg_is_send_type?(node)
- flag_arg(node).send_type?
+ def flag_arg_is_send_type?(flag_arg)
+ flag_arg.send_type?
end
- def flag_arg_is_dstr_or_dsym?(node)
- flag = flag_arg(node)
- (flag.dstr_type? || flag.dsym_type?) && flag.children[0].str_type?
+ def flag_arg_is_dstr_or_dsym?(flag_arg)
+ (flag_arg.dstr_type? || flag_arg.dsym_type?) && flag_arg.children[0].str_type?
end
def caller_is_feature?(node)