Class: RuboCop::Cop::Lint::RaiseException
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/lint/raise_exception.rb
Overview
Checks for raise or fail statements which raise Exception or Exception.new. Use StandardError or a specific exception class instead.
If you have defined your own namespaced Exception class, it is possible to configure the cop to allow it by setting AllowedImplicitNamespaces to an array with the names of the namespaces to allow. By default, this is set to ‘[’Gem’]‘, which allows Gem::Exception to be raised without an explicit namespace. If not allowed, a false positive may be registered if `raise Exception` is called within the namespace.
Alternatively, use a fully qualified name with raise/fail (eg. ‘raise Namespace::Exception`).
Constant Summary collapse
- MSG =
'Use `StandardError` over `Exception`.'- RESTRICT_ON_SEND =
i[raise fail].freeze
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods included from AutoCorrector
Methods inherited from Base
#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, #cop_name, cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#exception?(node) ⇒ Object
60 61 62 |
# File 'lib/rubocop/cop/lint/raise_exception.rb', line 60 def_node_matcher :exception?, "(send nil? {:raise :fail} $(const ${cbase nil?} :Exception) ... )\n" |
#exception_new_with_message?(node) ⇒ Object
65 66 67 68 |
# File 'lib/rubocop/cop/lint/raise_exception.rb', line 65 def_node_matcher :exception_new_with_message?, "(send nil? {:raise :fail}\n (send $(const ${cbase nil?} :Exception) :new ... ))\n" |
#on_send(node) ⇒ Object
70 71 72 |
# File 'lib/rubocop/cop/lint/raise_exception.rb', line 70 def on_send(node) exception?(node, &check(node)) || (node, &check(node)) end |