class RubocopChallenger::Rubocop::TodoReader
To read `.rubocop_todo.yml` and parse each rules
Attributes
rubocop_todo_file_path[R]
Public Class Methods
new(rubocop_todo_file_path)
click to toggle source
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 7 def initialize(rubocop_todo_file_path) @rubocop_todo_file_path = rubocop_todo_file_path end
Public Instance Methods
all_rules()
click to toggle source
@return [Array<Rule>]
Array of rubocop rule instances which ordered by offense count
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 21 def all_rules @all_rules ||= file_contents .split(/\n{2,}/) .map! { |content| Rule.new(content) } .reject! { |rule| invalid?(rule) } .sort! end
any_rule()
click to toggle source
@return [Rule]
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 46 def any_rule auto_correctable_rules.sample end
auto_correctable_rules()
click to toggle source
@return [Array<Rule>]
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 31 def auto_correctable_rules all_rules.select(&:auto_correctable?) end
least_occurrence_rule()
click to toggle source
@return [Rule]
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 36 def least_occurrence_rule auto_correctable_rules.first end
most_occurrence_rule()
click to toggle source
@return [Rule]
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 41 def most_occurrence_rule auto_correctable_rules.last end
version()
click to toggle source
Returns the version of RuboCop used to create the “.rubocop_todo.yml”
@return [Type] the RuboCop version
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 14 def version file_contents =~ /using RuboCop version (\d{1,}\.\d{1,}\.\d{1,})/ Regexp.last_match(1) end
Private Instance Methods
file_contents()
click to toggle source
@return [String] the “.rubocop_todo.yml” contents
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 55 def file_contents @file_contents ||= File.read(rubocop_todo_file_path) end
ignored_rules()
click to toggle source
@return [Array<String>] Ignored rule titles
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 66 def ignored_rules @ignored_rules ||= ConfigEditor.new.ignored_rules end
invalid?(rule)
click to toggle source
@param rule [Rule] the target rule @return [Boolean]
# File lib/rubocop_challenger/rubocop/todo_reader.rb, line 61 def invalid?(rule) rule.offense_count.zero? || ignored_rules.include?(rule.title) end