-
由 Peter Leitzen 创作于
HAML files (ending with `.html.haml.rb`) added (manually) to `.rubocop_todo/**/*.yml` now are retained and not removed. This is useful because `haml-lint` (which use RuboCop rules) cannot exclude HAML files per RuboCop. So, we tend to disable whole cop rules in `haml-lint.yml`. With this change we can now start enabling "temporarily" disabled cop rules in add HAML files as TODOs.
由 Peter Leitzen 创作于HAML files (ending with `.html.haml.rb`) added (manually) to `.rubocop_todo/**/*.yml` now are retained and not removed. This is useful because `haml-lint` (which use RuboCop rules) cannot exclude HAML files per RuboCop. So, we tend to disable whole cop rules in `haml-lint.yml`. With this change we can now start enabling "temporarily" disabled cop rules in add HAML files as TODOs.
代码所有者
将用户和群组指定为特定文件更改的核准人。 了解更多。
cop_todo.rb 1.47 KiB
# frozen_string_literal: true
require_relative 'formatter/graceful_formatter'
module RuboCop
class CopTodo
attr_accessor :previously_disabled, :grace_period
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
@grace_period = false
end
def record(file, offense_count)
@files << file
@offense_count += offense_count
end
def add_files(files)
@files.merge(files)
end
def autocorrectable?
@cop_class&.support_autocorrect?
end
def generate?
previously_disabled || grace_period || files.any?
end
def to_yaml
yaml = []
yaml << '---'
yaml << '# Cop supports --autocorrect.' 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 << " #{RuboCop::Formatter::GracefulFormatter.grace_period_key_value}" if grace_period
if files.any?
yaml << ' Exclude:'
yaml.concat files.sort.map { |file| " - '#{file}'" }
end
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