Class: RuboCop::OptionsValidator
- Inherits:
-
Object
- Object
- RuboCop::OptionsValidator
- Defined in:
- lib/rubocop/options.rb
Overview
Validates option arguments and the options’ compatibility with each other.
Class Method Summary collapse
-
.validate_cop_list(names) ⇒ Object
Cop name validation must be done later than option parsing, so it’s not called from within Options.
Instance Method Summary collapse
- #boolean_or_empty_cache? ⇒ Boolean
- #except_syntax? ⇒ Boolean
- #incompatible_options ⇒ Object
-
#initialize(options) ⇒ OptionsValidator
constructor
A new instance of OptionsValidator.
- #no_offense_counts_without_auto_gen_config? ⇒ Boolean
- #only_includes_unneeded_disable? ⇒ Boolean
-
#validate_compatibility ⇒ Object
rubocop:disable Metrics/MethodLength.
- #validate_exclude_limit_option(args) ⇒ Object
Constructor Details
#initialize(options) ⇒ OptionsValidator
Returns a new instance of OptionsValidator.
193 194 195 |
# File 'lib/rubocop/options.rb', line 193 def initialize() @options = end |
Class Method Details
.validate_cop_list(names) ⇒ Object
Cop name validation must be done later than option parsing, so it’s not called from within Options.
179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/rubocop/options.rb', line 179 def self.validate_cop_list(names) return unless names departments = Cop::Cop.registry.departments.map(&:to_s) names.each do |name| next if Cop::Cop.registry.names.include?(name) next if departments.include?(name) next if %w(Syntax Lint/Syntax).include?(name) raise ArgumentError, "Unrecognized cop or department: #{name}." end end |
Instance Method Details
#boolean_or_empty_cache? ⇒ Boolean
226 227 228 |
# File 'lib/rubocop/options.rb', line 226 def boolean_or_empty_cache? !@options.key?(:cache) || %w(true false).include?(@options[:cache]) end |
#except_syntax? ⇒ Boolean
221 222 223 224 |
# File 'lib/rubocop/options.rb', line 221 def except_syntax? @options.key?(:except) && (@options[:except] & %w(Lint/Syntax Syntax)).any? end |
#incompatible_options ⇒ Object
234 235 236 |
# File 'lib/rubocop/options.rb', line 234 def @incompatible_options ||= @options.keys & Options::EXITING_OPTIONS end |
#no_offense_counts_without_auto_gen_config? ⇒ Boolean
230 231 232 |
# File 'lib/rubocop/options.rb', line 230 def no_offense_counts_without_auto_gen_config? @options.key?(:no_offense_counts) && !@options.key?(:auto_gen_config) end |
#only_includes_unneeded_disable? ⇒ Boolean
216 217 218 219 |
# File 'lib/rubocop/options.rb', line 216 def only_includes_unneeded_disable? @options.key?(:only) && (@options[:only] & %w(Lint/UnneededDisable UnneededDisable)).any? end |
#validate_compatibility ⇒ Object
rubocop:disable Metrics/MethodLength
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'lib/rubocop/options.rb', line 197 def validate_compatibility # rubocop:disable Metrics/MethodLength if only_includes_unneeded_disable? raise ArgumentError, 'Lint/UnneededDisable can not be used with --only.' end if except_syntax? raise ArgumentError, 'Syntax checking can not be turned off.' end unless boolean_or_empty_cache? raise ArgumentError, '-C/--cache argument must be true or false' end if no_offense_counts_without_auto_gen_config? raise ArgumentError, '--no-offense-counts can only be used together ' \ 'with --auto-gen-config.' end return if .size <= 1 raise ArgumentError, 'Incompatible cli options: ' \ "#{.inspect}" end |
#validate_exclude_limit_option(args) ⇒ Object
238 239 240 241 242 243 244 245 246 247 248 249 250 251 |
# File 'lib/rubocop/options.rb', line 238 def validate_exclude_limit_option(args) if @options[:exclude_limit] !~ /^\d+$/ # Emulate OptionParser's behavior to make failures consistent regardless # of option order. raise OptionParser::MissingArgument end # --exclude-limit is valid if there's a parsed or yet unparsed # --auto-gen-config. return if @options[:auto_gen_config] || args.include?('--auto-gen-config') raise ArgumentError, '--exclude-limit can only be used with --auto-gen-config.' end |