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/formatter/todo_formatter.rb')
-rw-r--r--rubocop/formatter/todo_formatter.rb48
1 files changed, 4 insertions, 44 deletions
diff --git a/rubocop/formatter/todo_formatter.rb b/rubocop/formatter/todo_formatter.rb
index 662cc1551ff..789d0418f96 100644
--- a/rubocop/formatter/todo_formatter.rb
+++ b/rubocop/formatter/todo_formatter.rb
@@ -5,6 +5,7 @@ require 'rubocop'
require 'yaml'
require_relative '../todo_dir'
+require_relative '../cop_todo'
module RuboCop
module Formatter
@@ -14,26 +15,6 @@ module RuboCop
# For example, this formatter stores offenses for `RSpec/VariableName`
# in `.rubocop_todo/rspec/variable_name.yml`.
class TodoFormatter < BaseFormatter
- class Todo
- attr_reader :cop_name, :files, :offense_count
-
- def initialize(cop_name)
- @cop_name = cop_name
- @files = Set.new
- @offense_count = 0
- @cop_class = RuboCop::Cop::Registry.global.find_by_cop_name(cop_name)
- end
-
- def record(file, offense_count)
- @files << file
- @offense_count += offense_count
- end
-
- def autocorrectable?
- @cop_class&.support_autocorrect?
- end
- end
-
DEFAULT_BASE_DIRECTORY = File.expand_path('../../.rubocop_todo', __dir__)
class << self
@@ -44,7 +25,7 @@ module RuboCop
def initialize(output, _options = {})
@directory = self.class.base_directory
- @todos = Hash.new { |hash, cop_name| hash[cop_name] = Todo.new(cop_name) }
+ @todos = Hash.new { |hash, cop_name| hash[cop_name] = CopTodo.new(cop_name) }
@todo_dir = TodoDir.new(directory)
@config_inspect_todo_dir = load_config_inspect_todo_dir
@config_old_todo_yml = load_config_old_todo_yml
@@ -65,8 +46,8 @@ module RuboCop
def finished(_inspected_files)
@todos.values.sort_by(&:cop_name).each do |todo|
- yaml = to_yaml(todo)
- path = @todo_dir.write(todo.cop_name, yaml)
+ todo.previously_disabled = previously_disabled?(todo)
+ path = @todo_dir.write(todo.cop_name, todo.to_yaml)
output.puts "Written to #{relative_path(path)}\n"
end
@@ -90,27 +71,6 @@ module RuboCop
path.delete_prefix("#{parent}/")
end
- def to_yaml(todo)
- yaml = []
- yaml << '---'
- yaml << '# Cop supports --auto-correct.' if todo.autocorrectable?
- yaml << "#{todo.cop_name}:"
-
- if previously_disabled?(todo)
- yaml << " # Offense count: #{todo.offense_count}"
- yaml << ' # Temporarily disabled due to too many offenses'
- yaml << ' Enabled: false'
- end
-
- yaml << ' Exclude:'
-
- files = todo.files.sort.map { |file| " - '#{file}'" }
- yaml.concat files
- yaml << ''
-
- yaml.join("\n")
- end
-
def check_multiple_configurations!
cop_names = @config_inspect_todo_dir.keys & @config_old_todo_yml.keys
return if cop_names.empty?