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_todo.rb')
-rw-r--r--rubocop/cop_todo.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/rubocop/cop_todo.rb b/rubocop/cop_todo.rb
new file mode 100644
index 00000000000..42e2f9fbe13
--- /dev/null
+++ b/rubocop/cop_todo.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+module RuboCop
+ class CopTodo
+ attr_accessor :previously_disabled
+
+ attr_reader :cop_name, :files, :offense_count
+
+ def initialize(cop_name)
+ @cop_name = cop_name
+ @files = Set.new
+ @offense_count = 0
+ @cop_class = self.class.find_cop_by_name(cop_name)
+ @previously_disabled = false
+ end
+
+ def record(file, offense_count)
+ @files << file
+ @offense_count += offense_count
+ end
+
+ def autocorrectable?
+ @cop_class&.support_autocorrect?
+ end
+
+ def to_yaml
+ yaml = []
+ yaml << '---'
+ yaml << '# Cop supports --auto-correct.' if autocorrectable?
+ yaml << "#{cop_name}:"
+
+ if previously_disabled
+ yaml << " # Offense count: #{offense_count}"
+ yaml << ' # Temporarily disabled due to too many offenses'
+ yaml << ' Enabled: false'
+ end
+
+ yaml << ' Exclude:'
+ yaml.concat files.sort.map { |file| " - '#{file}'" }
+ yaml << ''
+
+ yaml.join("\n")
+ end
+
+ def self.find_cop_by_name(cop_name)
+ RuboCop::Cop::Registry.global.find_by_cop_name(cop_name)
+ end
+ end
+end